Czy obiekt executora ma zostać ponownie użyty po shutdown
? Mam na myśli, jeśli zadzwonię shutdown
lub shutdownNow
po zakończeniu executora, czy powinienem zrobić new
, aby utworzyć nową pulę wątków, czy jest możliwe, aby jakoś "zresetować"/ponownie użyć poprzednio zakończonego executora i użyć go ponownie?Czy executor ma być ponownie użyty?
Aktualizacja:
Jeśli trzeba utworzyć nową pulę wątków, jak mogę „zrozumieć”, że poprzedni został zatrzymany?
E.g. Następujące:
public void startPool(){
if(threadPool != null && !threadPool.isShutdown()){
return;
}
threadPool = Executors.newCachedThreadPool();
//other stuff
}
public void stopPool(){
if(threadPool != null){
threadPool.shutdown();
}
}
Nie działa. Jeśli zadzwonię pod numer stop
, a następnie start
, nowa pula wątków nie zostanie utworzona z powodu warunków. Jaki jest właściwy sposób kodowania tego?
nie powinno to być "... &&!threadPool.isShutdown() ', abyś powrócił wcześniej tylko wtedy, gdy TP nadal działa (tj. _started_)? –
@RalfH: Dobry punkt! Zaktualizowany OP – Jim
OK, a ty nazywasz 'stop', a następnie' start' z tego samego wątku? –