이것이 자바다 책보면서 공부 중 입니다. 스레드풀 예제보면서 공부하다가 의문점이 생겨서 질문 올립니다. 질문이 길어서 죄송합니다.
import java.util.concurrent.Callable; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.Future; public class TheMainClass { public static void main(String[] args){ ExecutorService executorService = Executors.newFixedThreadPool(5); for(int i=1; i<=100; i++) { final int idx = i; Future<Integer> future = executorService.submit(new Callable<Integer>() { @Override public Integer call() throws Exception { int sum = 0; for(int i=1; i<=idx; i++) { sum+= i; } Thread thread = Thread.currentThread(); System.out.println("[" + thread.getName() + "] 1~" + idx + " 합 계산"); return sum; } }); try { int result = future.get(); System.out.println("\t리턴값 : " + result); } catch(Exception e) { e.printStackTrace(); } } executorService.shutdown(); } }다음 예제는 자연수를 덧셈하는 작업으로, 100개의 Callable을 생성하고 submit() 메소드로 작업 큐에 넣는다. ExecutorService는 최대 5개 스레드로 작업 큐에서 Callable을 하나씩 꺼내어 call() 메소드를 실행하면서 작업을 처리한다. 30라인에서 Future.get() 메소드는 작업이 끝날떄까지 기다렸다가 call() 메소드가 리턴한 값을 리턴한다.
글이 길어서
https://gall.dcinside.com/mgallery/board/view/?id=backend&no=6537&page=1
질문은 여기에 있습니다...