Threads ThreadPoolExecutor remove mit callable Objekte

Elrond

Mitglied
Hallo alle Zusammen,

der ThreadPoolExecutor bietet einen die Möglichkeit Runnable Objekte aus der BlockingQueue mit remove zu entfernen. In meinen ersten Entwurf habe ich mich jedoch für die Verwendung von Callable Objekte entschieden, da jedes Objekte(task) ein Ergebnis zurückgeben muss. Die vom ThreadPoolExecutor erzeugten Futures bieten auch eine benötigte Timeoutfunktion.

Und genau das ist die Stelle wo mir nicht ganz klar ist was im Detail passiert. Das Future liefert eine Timeoutexception, was passiert jedoch mit den task wenn er in der BlockingQueue wartet?
Wird der task verworfen da die Queue die einzige Referenz hält oder wird er dennoch verarbeitet? Falls er verarbeitet wird, wie kann ich das verhindern? Ich nehme an das die remove Methode für diese Situation vorgesehen ist, wenn ja, wie handhabe ich das Problem mit callables.

VG
Elrond
 

Elrond

Mitglied
Dann etwas kürzer:
Ich verwende einen ThreadPoolExecutor für die Abarbeitung von Aufgaben, eine Aufgabe implementiert das
Callable Interface. Das Ergebnis soll in ein Future gespeichert werden, wobei für dieses Future ein Timeout gilt.
Was passiert also wenn es zum Timeout kommt, wird meine Aufgabe automatisch aus der BlockingQueue entfernt?
Mein Gefühl sagt mir nein, auch konnte ich keinen Hinweis im Java Quelltext finden.
 

Ähnliche Java Themen

Neue Themen


Oben