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();
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Nginx 이미지 프 록 시 서버Windows 에서 Nginx 이미지 프 록 시 서버 Linux 에서 Nginx 이미지 서버 설정...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.