Ich implementiere einen Thread-Pooling-Mechanismus, in dem ich Aufgaben mit unterschiedlichen Prioritäten ausführen möchte. Ich möchte einen netten Mechanismus haben, mit dem ich eine Aufgabe mit hoher Priorität an den Dienst übermitteln kann, damit sie vor anderen Aufgaben geplant wird. Die Priorität der Aufgabe ist eine intrinsische Eigenschaft der Aufgabe selbst (ob ich diese Aufgabe als Callable
oder eine Runnable
ist für mich nicht wichtig).
Oberflächlich betrachtet sieht es so aus, als könnte ich eine PriorityBlockingQueue
als die Aufgabenwarteschlange in meiner ThreadPoolExecutor
, aber diese Warteschlange enthält Runnable
Objekte, bei denen es sich auch um die Runnable
Aufgaben, die ich ihr vorgelegt habe. Außerdem, wenn ich Folgendes eingereicht habe Callable
Aufgaben, ist es nicht klar, wie dies jemals abgebildet werden könnte.
Gibt es eine Möglichkeit, dies zu tun? Ich würde wirklich lieber nicht meine eigene Rolle für diese, da ich viel wahrscheinlicher ist, es falsch, dass Weg zu bekommen.
(Nebenbei bemerkt: Ja, ich bin mir der Möglichkeit bewusst, dass Arbeitsplätze mit niedrigerer Priorität in einem solchen Fall verhungern könnten. Extrapunkte (?!) für Lösungen, die eine vernünftige Garantie für Fairness bieten)