Day19 - jeremy0405/Codesquad_CS GitHub Wiki

๋น„๋™๊ธฐ ๋ณ‘๋ ฌ์ฒ˜๋ฆฌ

๋น„๋™๊ธฐ๋Š” ํŠน์ • ๋กœ์ง์˜ ์‹คํ–‰์ด ๋๋‚ ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฌ์ง€ ์•Š๊ณ  (Blocking ๋˜์ง€ ์•Š๊ณ ) ๊ณ„์† ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•ด ๋‚˜๊ฐ€๋Š” ๊ฒƒ์ด๋‹ค.

แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2022-01-27 23 26 23

๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ๋Š” ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ๋ฅผ ํ†ตํ•ด์„œ ํ•  ์ˆ˜ ์žˆ๋‹ค.

์ž๋ฐ”์—์„œ๋Š” Future Class๋ฅผ ํ†ตํ•ด์„œ ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ๋ฅผ ํ•  ์ˆ˜ ์žˆ๊ณ  Java 8 ๋ฒ„์ „ ์ดํ›„๋กœ๋Š” CompletableFuture Class๋ฅผ ํ†ตํ•ด์„œ ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ๋ฅผ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ๋‹ค.

CompletableFuture Class

์ฃผ์š” ๋ฉ”์„œ๋“œ

Method Parameter Type Return Description
runAsync Runnable, (Option) Executor CompletableFuture Task๋ฅผ ๋ฐ›์•„์„œ ์‹คํ–‰ํ•˜๊ณ  ๋ฐ˜ํ™˜ํ•œ๋‹ค.
supplyAsync Supplier, (Option) Executor CompletableFuture Lambda๋ฅผ ๋ฐ›์•„์„œ ๋ฆฌํ„ดํƒ€์ž…(U)์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
allOf CompletableFuture<?> ... CompletableFuture CompletableFuture ๋ฆฌ์ŠคํŠธ๋ฅผ ๋ฐ›์•„์„œ ํ•˜๋‚˜๋กœ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
anyOf CompletableFuture<?> ... CompletableFuture CompletableFuture ๋ฆฌ์ŠคํŠธ๋ฅผ ๋ฐ›์•„์„œ ํ•˜๋‚˜๋กœ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

Executor executor = Excutors.newFixedThreadPool(2);

CompletableFuture.runAsync(() -> { 
	try { 
		Thread.sleep(10L); 
		} catch (InterruptedException e) {
		 e.printStackTrace(); 
		}
	System.out.println(Thread.currentThread().getName() + ": hi"); 
}, executor);
Executor executor = Excutors.newFixedThreadPool(2);

CompletableFuture.runAsync(() -> { 
	try { 
		Thread.sleep(10L); 
		} catch (InterruptedException e) {
		 e.printStackTrace(); 
		}
	return Thread.currentThread().getName() + ": hi"; 
}, executor);

allOf์™€ anyOf๋Š” CompletableFuture๋“ค์„ ํ•˜๋‚˜๋กœ ๋ฌถ์–ด์ฃผ๊ณ  allOf๋Š” ๋ชจ๋‘ ์ข…๋ฃŒํ•  ๋•Œ๊นŒ์ง€, anyOf๋Š” ์ œ์ผ ๋จผ์ € ์ข…๋ฃŒ๋œ ํ•˜๋‚˜๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.


์ฐธ๊ณ ์ž๋ฃŒ

โš ๏ธ **GitHub.com Fallback** โš ๏ธ