Ich möchte einige Aufgaben in einer serialisierten Weise ausführen. Die typische Lösung hierfür besteht darin, einen Task zu erstellen und Aufgaben auf diesem auszuführen.Java: single-threaded Unter-Executor in einem anderen Multithread Executor
Allerdings habe ich bereits einen Thread-Pool, der Multi-Threaded ist.
Gibt es eine einfache Möglichkeit, einen Sub-Executor abzuleiten, der sich wie ein Singlethread-Thread verhält (wie: nur eine Task gleichzeitig ausführt), aber einen anderen (möglicherweise nicht single-threaded) Executor verwendet "Backend" anstatt einen brandneuen OS-Thread zu erstellen?
Es gibt mehrere Anwendungsfälle dafür, warum wir wollen, würde dies tun:
- die App vielleicht schon einen Thread-Pool haben für z.B. Hintergrundaufgaben, mit eine festgelegte Priorität usw., die wir gerne wiederverwenden würden.
- In ähnlicher Weise könnte man in einem Exekutor übergeben, die nicht nur ein einfachen Thread-Pool (zB Ausführungs Aufschieben für späte Messung der Ausführungszeit etc.)
- eine Teilmenge davon in MoreExecutors.directExecutor Passing() für Testen (damit zB Futures sofort auflösen).
EDIT: hinzugefügt, um die obigen Beispiele
Können Sie einen Taskcode eingeben, den Sie in einem Thread ausführen möchten? Ich denke, das Ausführen einer Aufgabe in einem einzelnen Thread würde von der Aufgabe selbst entschieden werden. Wenn Sie nicht versuchen, etwas innerhalb der Aufgabe in einem anderen Thread zu tun, wird es nur im selben Thread ausgeführt. –
Ich stimme Vijendra zu - Ihre Frage ist interessant, aber um mehr hilfreiches Feedback zu geben, könnte uns ein bisschen Code helfen. – GhostCat