2016-06-19 2 views
2

예외로 인해 스레드가 종료되면이 스레드는 어떻게됩니까? 스레드 풀 안에 있으면 새 스레드가 생성됩니까? 스칼라 ExecutionContext에서 무슨 일이 일어나는지 관심이 있습니다.하지만 ExecutionContext가 자바 스레드 풀을 감싸기 때문에 자바 사용자도 대답을 알게 될 것입니다.ExecutionContext 및/또는 Java 스레드 풀에서 죽은 스레드가 대체 되었습니까?

예를 들어 FixedThreadPool (100)을 래핑하는 ExecutionContext를 만들면 한 스레드가 죽으면 스레드 풀이 스레드를 대체합니까?

+4

https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/Executors.html#newFixedThreadPool-int- –

+2

* 모든 스레드가 이전에 실행 중에 장애로 인해 종료되면 * –

답변

5

스레드 자체가 죽은 후에 새 스레드를 생성 할 수는 없지만 스레드 풀이 스레드를 대체 할 수는 있습니다. 예를 들어, Executors.newFixedThreadPool()으로 작성된 스레드 풀은 필요할 때 죽은 스레드를 대체합니다. Executors.newFixedThreadPool()에 대한 문서에서 :

". 어떤 스레드가 종료 이전에 실행 중에 오류로 인해 종료되면 다음 작업을 실행하는 데 필요한 경우, 새가 그 자리를 취할 것"

+0

이 새 스레드는 먼저 작업을 실행하거나 죽은 스레드가 중단 된 곳에서 계속 진행할 것인가? – masSdev

관련 문제