Ich habe viel gesucht, konnte aber keine Lösung finden. I Java-Thread-Pool in einer solchen Art und Weise verwendet werden:Angeben der Ausführung der Task-Reihenfolge in Java
ExecutorService c = Executors.newFixedThreadPool(3);
for (int i = 0; i < 10; ++i) {
c.execute(new MyTask(i));
}
In einer solchen Art und Weise Tasks in daraus folgenden Reihenfolge (wie in queue) ausgeführt werden. Aber ich muss die Strategie "Nächste Aufgabe auswählen" ändern. Daher möchte ich jedem Task eine Priorität zuweisen (es ist keine Threadpriorität) und Ausführungsaufgaben entsprechen diesen Prioritäten. Wenn der Executor eine andere Task beendet hat, wählt er die nächste Task als Task mit der höchsten Priorität. Es beschreibt häufiges Problem. Vielleicht gibt es einen einfacheren Ansatz, der keine Prioritäten berücksichtigt. Er wählt die zuletzt hinzugefügte Aufgabe als nächste auszuführende anstelle von zuerst hinzugefügte aus. Grob gesagt, verwendet FixedThreadPool FIFO-Strategie. Kann ich zum Beispiel die LIFO-Strategie verwenden?
+1 vielleicht ein Schnipsel geben, um dies besser zu machen. – Tudor
Dies kann nicht funktionieren, weil 'newTaskFor' die ComparableFutureTask in eine FutureTask umschließt, die nicht vergleichbar ist. Sie müssen auch die zwei 'newTaskFor'-Methoden überschreiben. – assylias
Siehe [dieser Beitrag] (http://Stackoverflow.com/a/16834473/829571) für ein einfaches Beispiel. – assylias