[CS/운영체제] 멀티스레드와 동시성 - 38부

황제연·2025년 8월 9일
0

CS학습

목록 보기
161/193
post-thumbnail

ExecutorService - 작업 컬렉션 처리

ExecutorService는 여러 작업을 한번에 편리하게 처리하는 invokeAll(), invokeAny() 기능을 제공합니다

invokeAll()

모든 Callble 작업을 제출하고 모든 작업이 완료될때까지 기다리는 메소드와
지정된 시간 내에 모든 Callable 작업을 제출하고 완료될때까지 기다리는 메소드를 제공합니다

invokeAny()

하나의 Callable 작업이 완료될때까지 기다리고, 가장 먼저 완료된 작업의 결과를 반환하며
완료되지 않은 나머지 작업은 취소하는 메소드와
지정된 시간 내에 하나의 Callable 작업이 완료될때까지 기다리고, 가장 먼저 완료된 작업을 반환하며
완료되지 않은 나머지 작업은 취소하는 메소드를 제공합니다

이 둘을 이용하면 한꺼번에 여러 작업을 요청할 수 있습니다

List<CallableTask> takss = List.of(task1, task2, task3);

List<Future<Integer>> futures = service.invokeAll(tasks);

invokeAll은 한번에 여러 작업을 제출하고, 모든 작업이 완료될때까지 기다립니다

List<CallableTask> takss = List.of(task1, task2, task3);

Integer res = service.invokeAny(tasks);

invokeAny()는 한번에 여러 작업을 제출하고, 가장 먼저 완료된 작업의 결과를 반환합니다
이때 완료되지 않은 나머지 작업은 인터럽트를 통해 취소합니다

참고

  • 김영한의 실전 자바 - 고급 1편
profile
Software Developer

0개의 댓글