In ExecutorService, wie kann ich alle Threads gruppieren, die eine bestimmte Kurs-ID verarbeiten, und dann nach einem Thread-Ende-Prozess diese Kurs-ID, alle anderen Threads schließen, die im Prozess dieser Kurs-ID sind?Gruppenthreads in ExecutorService
Die Anzahl der Threads, die die Kurs-ID verarbeiten können, bis ein Thread beendet wird, ist keine feste Nummer.
Update:
So alle Fäden geben Sie diesen Kurs zu verarbeiten, ich werde sie auf eine statische Sammlung hinzuzufügen.
Angenommen, für courseid1 wird thread1 zunächst die Verarbeitung,
List l1 = new ArrayList();
l1.add(thread1);
Map t = new Hashmap();
t.add("courseid1":l1)
So, während thread1 in Prozess ist ein anderer Thread courseid1,
l1.add(thread2);
Dann, wenn der Kurs Status abgeschlossen thread1 sehen zu verarbeiten kommt, Ich werde Erfolg an alle Threads in der Liste l1 senden.
Die Zukunft, die Sie vom Executor bekommen, hat 'cancel' Methode, die das könnte. Natürlich müssen Sie eine Art Aufgabenregistrierung durchführen, damit Sie wissen, was Sie abbrechen müssen. – mszymborski