Ich habe rund 900 Aufgaben. Ich habe Threadpoolzählung auf 50 festgelegt. Ich führe eine Schleife aus und übergebe jede Aufgabe an den ExecutorService.Executor Service fehlt einige Aufgaben
Sobald Kontrolle kommt nenne ich Abschaltung wie unter
for (Entry<String, String> CurrentJob : Tasks.entrySet()) {
m_service.submit(new MyTask(CurrentJob.getValue(), CurrentJob.getKey()));
}
m_service.shutdown();
Jede Aufgabe dauert etwa 1 Sekunde auf average.Now ich zwei Fragen
a) Fast alle von ihnen machen die Arbeit (850), aber ungefähr 50 sind verloren. Ich habe den Debugger auf Callable gesetzt, aber die Kontrolle kommt nicht einmal für diese spezielle Aufgabe. Obwohl wenn ich sie einzeln einsetze, funktionieren sie. Welche Logik des Executor-Dienstes fehlt mir?
b) Ich habe einen Timer um diesen Code gelegt und nach javaDoc Shutdown sollte warten, bis alle Threads fertig sind, aber mein Timer sagt immer Zeit Null genommen.
Nr. Das passiert nicht, weil die Kontrolle in 0 Sekunden beendet wird und meine Aufgabe auch nach 3-4 Minuten erledigt wird. nur aus Gründen der Argumentation ersetzt ich Shutdown mit awaistTermination auch. – user2449952