도당탕탕

Item80 : Executor, Task, Stream 을 Thread 보다 선호하라. 본문

JAVA

Item80 : Executor, Task, Stream 을 Thread 보다 선호하라.

backlo 2023. 2. 3. 14:39
  • Executor Framework
    • java.util.concurrent 패키지에 존재
    • 기존의 Thread 클래스보다 더 편리한 사용성 제공
    • 객체생성 -> ExecutorService exec = Executors.newSingleThreadExecutor();
    • 실행 -> exec.execute(runnable);
    • 종료 -> exec.shutdown();
    • Thread pool 작업의 모든 면을 설정하고 싶다면, Executors.ThreadPoolExecutor 사용
    • 작은 프로그램(local에서 동작하는 프로그램)에 대해서는 Executors.newCachedThreadPool 사용
    • 큰 프로그램(production용)에 대해서는 Executors.newFixedThreadPool 사용
  • 작업의 단위를 task로 추상화하며, 두 가지 종류가 있다.
    • Runnable
    • Callable : Runnable과 비슷하지만 값을 리턴하고 임의의 예외를 던질 수 있음.
  • Fork-join task를 지원
    • Fork-join task는 여러 subtask로 나누어지고 스레드들은 task를 처리할 뿐만 아니라 다른 스레드들로부터 task를 뺏어올 수 있다. 결과적으로 higher CPU utilization, higher throughput, lower latency를 제공함.
  • Parallel streams
    • Fork-join pools를 기반으로 작성된 더 쉬운 api
Comments