thread
-
CompletableFuture2JAVA/JAVA8 관련 2022. 5. 31. 16:54
CompletableFuture는 별다른 Executor를 사용하지 않아도 ForkJoinPool에 있는 Common Pool을 사용한다. 하지만 원한다면 직접 쓰레드풀을 만들어서 사용할 수 있다. 아래 예제와 같이 runAsync()나 supplyAsync() 메서드를 호출할 때 2번째 인자로 줄 수 있다. 콜백을 실행할 풀을 다른곳에서 실행할때에는 thenRunAsync, thenAcceptAsync, thenRunAsync 등을 사용하면된다. public class CompletableFutureP2 { public static void main(String[] args) throws InterruptedException, ExecutionException { ExecutorService execu..
-
CompletableFuture1JAVA/JAVA8 관련 2022. 5. 31. 14:55
CompletableFuture : - 자바에서 비동기 프로그래밍을 지원하는 인터페이스임. - Future에서 하기 어려웠던 작업들을 수월하게 할 수 있음. Future에서 하기 어려웠던 작업들 1) Future를 외부에서 완료시킬 수 없다. 취소하거나 get()에 타임아웃을 설정할 수 없다. 2) 블로킹 코드(get())를 사용하지 않고서는 작업이 끝났을 때 콜백을 실행할 수 없음. -> Future를 통해 결과값을 만들고 무언가를 하는 작업은 get() 이후에 와야한다. 3) 여러 Future를 조합할 수 없다. 예) 이벤트 정보를 가져온 다음에 이벤트에 참여한 회원 목록 가져오기 4) 예외처리용 API를 제공하지 않는다. 비동기로 작업 실행하기 - 리턴값이 없는 작업 : runAsync() 사용 -..
-
Concurrent - ExecutorJAVA/JAVA8 관련 2022. 5. 22. 01:13
앞서 다룬 Thread나 Runnable와 같이 Low-Level API를 직접 다루는 것이 아닌, 쓰레드를 만들고 관리하는 작업을 고수준 API인 Executors에 위임하는 것 고수준 (High-Level) Concurrency 프로그래밍 쓰레드를 만들고 관리하는 작업을 애플리케이션에서 분리. 그런 기능을 Executors에게 위임. Executors가 하는 일 쓰레드 만들기: 애플리케이션이 사용할 쓰레드 풀을 만들어 관리한다. 쓰레드 관리: 쓰레드 생명 주기를 관리한다. 작업 처리 및 실행: 쓰레드로 실행할 작업을 제공할 수 있는 API를 제공한다. 단일 쓰레드 사용 public class Executor1 { public static void main(String[] args) { // 쓰레드를 ..