자바의 비동기 처리 관련 라이브러리의 여러 종류에 대해서 알아보고 직접 실행 시켜보면서 동작을 확인해보자.
JDK 1.5 부터 생성된 비동기 작업 실행을 도와주는 Interface
ExecutorService는 생성과 동시에 작업이 수행된다.
@Slf4j
public class FutureExample {
public static void main(String[] args) {
ExecutorService es = Executors.newCachedThreadPool();
es.execute(() -> {
try {
Thread.sleep(2000);
} catch (InterruptedException e) { }
log.info("Async");
});
log.info("Exit");
es.shutdown();
}
}
실행 결과
19:48:48.487 [main] INFO com.java.playground.future.FutureExample - Exit
19:48:50.490 [pool-1-thread-1] INFO com.java.playground.future.FutureExample - Async
기본적으로 스레드를 새로 만들고 삭제하는 작업은 비용이 많이 든다.
비용이 든다는 이야기는 컴퓨팅 인스턴스의 CPU 나 메모리를 소모한다는 뜻
그러한 비용을 줄이기 위해서 아래와 같은 방법을 이용한다.