Soll ein Executor-Objekt nach einer shutdown
wiederverwendet werden? Ich meine, wenn ich shutdown
oder shutdownNow
aufrufen, nachdem der Executor beendet wird, sollte ich new
tun, um einen neuen Thread-Pool zu erstellen, oder ist es möglich, den zuvor terminierten Executor irgendwie "reset"/wiederzuverwenden und wiederzuverwenden?Soll ein Executor wiederverwendet werden?
Update:
Wenn ich neue Thread-Pool erstellen müssen, wie kann ich „verstehen“, dass die vorherige beendet wurde?
Zum Beispiel Folgendes:
public void startPool(){
if(threadPool != null && !threadPool.isShutdown()){
return;
}
threadPool = Executors.newCachedThreadPool();
//other stuff
}
public void stopPool(){
if(threadPool != null){
threadPool.shutdown();
}
}
Funktioniert nicht. Wenn ich stop
und dann start
rufe, wird ein neuer Thread-Pool aufgrund von Bedingungen nicht erstellt. Was ist der richtige Weg, dies zu programmieren?
sollte das nicht '... && sein!threadPool.isShutdown() 'so dass Sie früh nur zurückkehren, wenn das TP noch läuft (d. h. _started_)? –
@RalfH: Guter Punkt! Aktualisiert OP – Jim
OK, und Sie rufen 'stop', gefolgt von' start' vom selben Thread? –