i ExecutorService verwenden nur eine Aufgabe zu einem Zeitpunkt, zu excecute diesen Code mit `Anzahl der aktiven Threads hält
und ich bin mit Thread.activeCount()
die Anzahl der aktiven Threads zu bekommen, aber wenn ich ein lauffähiges einreichen Aufgabe an den ExecutorService die Anzahl der aktiven Threads wird um eins erhöht, wie ist das möglich? Ich dachte, newSingleThreadExecutor()
ermöglicht die Ausführung nur einer Aufgabe zu einer Zeit, warum steigt die Anzahl der Threads weiter? , ich meine, sollte nicht die Anzahl der Threads nur um eins steigen und nicht mehr?
Beachten Sie, dass ich auch Zukunft verwenden, um die Ausführung aller ausführbaren Running vor dem Einreichen einer neuen Aufgabe abzubrechen, und es funktioniert gut, alle Runnables sind unterbrochen, aber die Anzahl der aktiven Threads nimmt weiter zu.
Edit: dies ist der Code, den ich anrufen, wenn ich auf einen Knopf drücken (Worker ist nur eine Klasse, die runnable implementiert)
private void handle() {
executorService=Executors.newSingleThreadExecutor();
Worker worker=new Worker();
future=executorService.submit(new Worker());
}
Vielleicht ist Ihr Fall: http://stackoverflow.com/a/27297989/6028746 –
oh meinen Sie ich nur diesen Code aufrufen sollte ExecutorService = Executors.newSingleThreadExecutor(); 'nur einmal ? – has19
Nein, aber vielleicht das Framework neue Referenz initiieren, wenn Sie es wieder anrufen –