자바의 비동기 처리 기술

자바의 비동기 처리 관련 라이브러리의 여러 종류에 대해서 알아보고 직접 실행 시켜보면서 동작을 확인해보자.

ExecutorService

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 나 메모리를 소모한다는 뜻

그러한 비용을 줄이기 위해서 아래와 같은 방법을 이용한다.