ThreadPoolExecutor anhalten

brunothg

Aktives Mitglied
Ich möchte wie in der Überschrift steht einige(nicht alle) laufende Threads beenden.
Ich bin soweit, dass keine neuen Runnables mehr angenommen werden. Aber diejenigen, die schon laufen tun dies auch unbeeindruckt weiter.

Ich wüsste wie ich einzelne Threads pausieren kann, aber wie komme ich an die Threads, di der Executor benutzt?

Oder wie kann man die sonst anhalten?
 
Zuletzt bearbeitet:

brunothg

Aktives Mitglied
Ok sorry ich habe mich nicht genau genug ausgedrückt!

Ich möchte bloß einzelne stoppen, nicht alle also nicht mit Shutdown/all
 

DEvent

Bekanntes Mitglied
IMHO gibt es in Java keine Methode um einen Thread einfach so zu beenden. Wie soll das auch funktionieren, dann wird eben mal mitten im x = 1 * 2 unterbrochen? Du kannst doch einfach alle Threads in einer Map/Liste abspeichern und dann den Thread stoppen den du willst. Der Thread sieht doch normalerweise so wie unten aus. Dann rufst du halt die stop() Methode für den Thread auf, den du stoppen willst.

Java:
class Foo implements Runnable {

    boolean running;

    run() {
        running = true;
        while (running) {
            something
        }
    }

    synchronized void stop() {
        running = false;
    }
}
 

kay73

Bekanntes Mitglied
An die laufenden Threads eines Executors kommst Du meines Wissens nicht heran; ist auch nicht Sinn der Sache, denn der Executor implementiert i. A. einen ressourcenschonenden autonomen Umgang mit Threads.

Um dein Problem zu lösen, kannst Du die
Code:
Future
-s, die Du nach einem
Code:
ExecutorService.submit()
bekommst, in einer synchronisierten Liste oder Map verwalten und später per
Code:
cancel(true)
gezielt abschießen. Aber Du musst nach wie vor beachten, dass Deine Runnables und Callables auch auf das
Code:
interrupt()
reagieren können. Den Executor hälst Du mit
Code:
shutdown()
an.

Man könnte auch eleganterweise eine Klasse schreiben, die den Executor und die Future-Liste kennt und dafür sorgt, dass Callables und Futures so zusammengefasst werden, dass es möglich ist, automatisch beim Ende eines Tasks fertige Futures zu entfernen.
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
E Threads ThreadPoolExecutor remove mit callable Objekte Allgemeine Java-Themen 3
S Threads ThreadPoolExecutor eigenartiges verhalten Allgemeine Java-Themen 5
Dit_ ThreadPoolExecutor | Die Aufgaben sollen reihe nach bearbeitet werden Allgemeine Java-Themen 6
S ThreadPoolExecutor: wie stelle ich fest dass meine Threads im Pool mit ihrer Arbeit fertig sind? Allgemeine Java-Themen 3
T ThreadPoolExecutor Allgemeine Java-Themen 6
O ThreadPoolExecutor Allgemeine Java-Themen 2
O Unterschied zwischen ThreadPoolExecutor und Executor Service Allgemeine Java-Themen 7
x46 Threads Threads anhalten Allgemeine Java-Themen 1
B APi methode kurz anhalten Allgemeine Java-Themen 8
S Listeners anhalten Allgemeine Java-Themen 6
S Thread anhalten per Button ? Allgemeine Java-Themen 3
C Ablauf des Programms anhalten, bis.... Allgemeine Java-Themen 5
S Thread anhalten Allgemeine Java-Themen 7
G Hauptthread anhalten / Unterschied zwischen Main-Thread und dialogelement-Thread Allgemeine Java-Themen 2
A programm anhalten aber wie? Allgemeine Java-Themen 4
T Schleife kurzzeitig anhalten Allgemeine Java-Themen 5
TheJavaKid Programmablauf anhalten bis actionlistener ausgeführt wurde Allgemeine Java-Themen 6
A Einen Thread von einem anderen aus anhalten? Allgemeine Java-Themen 11
M Thread mit wait anhalten, wie weiterlaufenlassen? Allgemeine Java-Themen 3
S Programm kurz anhalten Allgemeine Java-Themen 3

Ähnliche Java Themen

Neue Themen


Oben