F
fuchs005
Gast
Hallo Java-Freunde,
ich möchte gerne einen Thread-Pool realisieren, habe aber noch nie mit dem ExecutorService gearbeitet und bräuchte mal eure Hilfe.
Ich habe eine ArrayList<T> mit einer Menge von T-Objekten, die Runnable implementieren. Dann starte ich den Pool
Das klappt so weit gut, nun brauche ich aber eine Möglichkeit, den Thread-Pool auch wieder zu stoppen. Und zwar möchte ich gerne die aktuell laufenden Threads (die aktuell verarbeiteten T-Objekte) zu ende laufen lassen (mit einem Timeout, so dass sie nach Ablauf abgebrochen werden) und alle wartenden Threads (T-Objekte) in der Queue nicht mehr bearbeitet werden.
Durch Aufrufen von
wird der Pool zwar beendet, allerdings erst nach dem alle T-Objekte verarbeitet wurden. Durch Aufruf von
wird der Pool sofort beendet, ohne die aktuellen Threads zu ende laufen zu lassen.
Wie kann ich das wie oben beschrieben realisieren?
Danke für eure Hilfe!
ich möchte gerne einen Thread-Pool realisieren, habe aber noch nie mit dem ExecutorService gearbeitet und bräuchte mal eure Hilfe.
Ich habe eine ArrayList<T> mit einer Menge von T-Objekten, die Runnable implementieren. Dann starte ich den Pool
Java:
ExecutorService pool = Executors.newFixedThreadPool(5);
for (T t : tList) {
pool.execute(t);
}
Das klappt so weit gut, nun brauche ich aber eine Möglichkeit, den Thread-Pool auch wieder zu stoppen. Und zwar möchte ich gerne die aktuell laufenden Threads (die aktuell verarbeiteten T-Objekte) zu ende laufen lassen (mit einem Timeout, so dass sie nach Ablauf abgebrochen werden) und alle wartenden Threads (T-Objekte) in der Queue nicht mehr bearbeitet werden.
Durch Aufrufen von
Code:
pool.shutdown();
Code:
pool.shutdownNow();
Wie kann ich das wie oben beschrieben realisieren?
Danke für eure Hilfe!