루프가 {Loop-1}
인데, 여기서 스레드를 시작합니다. {Loop-1}
을 포함하는 클래스는 Daemon과 Runnable을 구현합니다. {Loop-1}
에서 시작된 스레드는 coordinate()
(ExecutorService를 사용하는 클래스 Coordinate.java
) 클래스를 호출합니다. Coordinate.java
의 객체가 생성됩니다Java : Callable을 사용한 ExecutorService : 동일한 풀을 루프에서 재사용 하시겠습니까? 셧다운이 필요합니까?
(이 {Loop-1}
전에 한 번 발생), 나는 Callable를 구현하는 클래스의 두 객체를 생성 coordinate()
에서 ExecutorService입니다에게 pool = Executors.newFixedThreadPool(2);
를 인스턴스화하고 난 다음을 시작하고 결과를 저장 미래의 결과 목록. 나는 그런 result = future.get();
와 루프의 결과를 얻기 위해 시도 후, 나는 {Loop-1}
로 돌아가서 전체 과정을 다시 시작 callableResults = pool.invokeAll(threads);
(coordinate()
, invokeAll()
를 호출
future.get()
지금 필자가있어 다음 질문에 답하십시오. 1. coordinate()
에 결과를 얻은 후에 ExecutorService 풀을 종료해야합니까? 2. 내 {Loop-1}
에를 호출 할 때마다 풀을 다시 만들어야합니까??
답변 해 주셔서 감사합니다. :-)
답변 해 주셔서 감사합니다! :-) – nano7
이것은 못생긴 :'while (! executorService.isTerminated()) {}'. 완료되지 않은 작업이있는 동안 코어를 100 % 미치게 만들 것입니다! 'awaitTermination' 방법이 더 좋습니다. –