java 스레드 풀 닫기

823 단어 작업 문제
작업 로그:
ExecutorService esPool = Executors.newFixedThreadPool(5);
for (Entry entry : treeMap.entrySet())
{
    esPool.submit(() ->
    {
        refreshOldData(entry.getKey(), entry.getValue());
    });
}

프로젝트에서 이런 코드를 만났는데 분명히 여기는 닫힌 라인이 없는지,
그래서 닫기 코드가 추가되었습니다.
esPool.shutdown(); 글에서 말한 바와 같이 만약 조작이 비동기적이라면 모든 라인이 실행될 때까지 기다릴 필요가 없거나 결과가 되돌아올 방법이 없다면 아래의 라인이 동기화되지 않아도 되고 shutdown () 을 직접 호출해서 모든 작업을 수행한 후에 라인을 없애면 된다
//이 함수를 실행하면 스레드 탱크에서 새로운 작업을 받지 않고 모든 작업이 끝난 후에 스레드를 삭제합니다.이 함수는 라인이 삭제될 때까지 기다리지 않고, 즉시 되돌아오는 excutor입니다.shutdown();
//스레드 탱크가 종료되기를 동기화하려면 다음 함수를 사용하여 실행 중인지 판단할 수 있습니다. 이 함수는timeout을 기다린 후 모든 작업이 완료되었는지pool을 되돌려줍니다.awaitTermination(timeout,TimeUnit)
//모든 활동 루트를 끝내고 대기 대기열에 있는 작업executor를 되돌려 보냅니다.shutdownNow();

좋은 웹페이지 즐겨찾기