Gibt es eine Möglichkeit, ExecutorService zu verwenden, um einen bestimmten Thread anzuhalten/fortzusetzen?Java ExecutorService einen bestimmten Thread pausieren/fortsetzen
private static ExecutorService threadpool = Executors.newFixedThreadPool(5);
vorstellen, dass ich den Faden wich als ID = 0 (unter der Annahme, dass zu jeder eine inkrementelle ID, bis die Größe des Threadpool zugeordnet ist, wird erreicht) gestoppt werden soll.
Nach einer Weile, sagen wir, indem ich einen Knopf drücke, möchte ich diesen bestimmten Thread fortsetzen und alle anderen Threads mit ihrem aktuellen Status belassen, der pausiert oder fortgesetzt werden kann.
Ich habe auf Java-Dokumentation eine unvollständige Version von PausableThreadPoolExecutor gefunden. Aber es passt nicht, was ich brauche, weil es alle Threads im Pool wieder aufnimmt.
Wenn es keine Möglichkeit gibt, es mit der Standardimplementierung des ExecutorService zu tun, kann mich jemand auf eine Java-Implementierung für dieses Problem hinweisen?
Danke!
Sind Sie sicher?Thread mit der angegebenen ID führt einen zufällig ausgewählten Job aus, sodass Sie einen unbekannten Job stoppen. Was macht der Sinn? –
Stellen Sie sich die folgende Situation vor: Sie haben einen Download-Manager, und auf diesem Manager können Sie Downloads anhalten und fortsetzen. Für jeden, den Sie herunterladen, spielt es keine Rolle, was nicht relevant ist, und Sie möchten verhindern, dass der Download wieder aufgenommen wird, wo immer Sie möchten. Macht dies die Frage für Sie klarer? –
Klarer, aber immer noch nicht viel Sinn. Beim Stoppen/Fortsetzen von Downloads geht es um Geschäftslogik, beim Threadpool geht es um Rechenressourcen. Logik durch Hinzufügen/Entfernen von Ressourcen zu steuern ist eine schlechte Idee IMHO. –