Ich habe einen singleThreadExecutor, um die Aufgaben, die ich ihm übergebe, in serieller Reihenfolge auszuführen, d. h. eine Aufgabe nach der anderen, keine parallele Ausführung.
Ich habe eine Runnable, die in etwa wie folgt funktioniert
MyRunnable implements Runnable {
@Override
public void run() {
try {
Thread.sleep(30000);
} catch (InterruptedException e1) {
e1.printStackTrace();
}
}
Wenn ich z. B. drei Instanzen von MyRunnable an den oben erwähnten Single-Thread-Executor übergebe, würde ich erwarten, dass die erste Aufgabe ausgeführt wird und aufgrund von Thread.sleep ihren ausführenden Thread in TIMED_WAITING hat (ich kann mich über den spezifischen Zustand irren). Den anderen beiden Aufgaben sollten keine Threads zugewiesen werden, die sie ausführen, zumindest nicht, bis die erste Aufgabe beendet ist.
So meine Frage ist, wie man diesen Zustand über die FutureTask-API oder irgendwie an den Thread zu erhalten, die die Aufgabe ausführt (wenn es keinen solchen Thread dann die Aufgabe wartet ausgeführt werden oder anhängig ist) und erhalten seinen Zustand oder vielleicht durch einige andere Mittel?
FutureTask definiert nur die Methoden isCancled() und isDone(), die aber nicht ausreichen, um alle möglichen Ausführungszustände des Tasks zu beschreiben.