가비지 컬렉션에 사용할 수있는 ExecutorService를 전달하고, 인스턴스에 전달 할 때 나는 Callable
즉 WorkerThread
은 호출 가능 내가 8 스레드 풀을
for (List<String> s : listOfLists) {
Future<?> future = executor.submit(new Worker(hugeList));
}
for (Future<?> f : futures) {
try {
String result = (String) f.get();
} catch (InterruptedException e) {
logger.error("Interrupted", e);
} catch (ExecutionException e) {
logger.error("Execution exception", e);
}
}
executor.shutdown();
구현 약 클래스의 100 개 인스턴스를 제공하고있다 집행자는 가비지 수집 대상이됩니까? f.get()이 실행될 때 가비지 콜렉션을받을 수 있거나 executor.shutdown()
이 호출 될 때까지 new Worker(hugeList)
은 모두 메모리에 남아있게됩니다.
모든 new Worker()
은 실제로 크기가 커서 각각의 스레드가 실행 된 후 가비지 수집됩니다. 그러나 나는 그들이 그 자격을 갖춘시기가 언제인지 확신 할 수 없다.
많은 의미가 있습니다. 고마워. –