작업 실행과 결과 기다리기를 분리합니다.
ExecutorService는 스레드 생성과 작업 큐를 관리하고 submit은 Future를 반환합니다. get은 완료를 기다리며 timeout을 지정할 수 있고 사용 후 shutdown해야 합니다.
예제에서 Future<T> future = executor.submit(task) 부분부터 찾으세요. 선언 타입, 실제 객체와 반환값을 한 줄씩 따라가면서 컴파일 단계에서 잡히는 문제와 실행 중 생기는 문제를 구분하세요.
작업 실패는 ExecutionException의 cause로 전달됩니다. 인터럽트를 잡으면 스레드의 interrupt 상태를 복원하는 규칙을 지킵니다.
스레드 풀 크기, 큐 길이, 거부 정책과 요청 시간 제한을 함께 설정해 과부하가 전체 서비스로 퍼지지 않게 합니다.
현재 코드를 먼저 실행해 출력과 타입 흐름을 확인한 뒤 두 계산을 동시에 제출하고 합계를 출력하세요.
작업마다 무제한 새 스레드를 만들거나 executor 종료를 빠뜨리지 마세요.
직접 바꿔보세요두 계산을 동시에 제출하고 합계를 출력하세요.
실행 버튼을 누르면 결과가 여기에 표시됩니다.