У меня есть singleThreadExecutor для выполнения задач, которые я ему передаю, в последовательном порядке, то есть одна задача за другой, без параллельного выполнения.
У меня есть runnable, которая что-то как это
MyRunnable implements Runnable {
@Override
public void run() {
try {
Thread.sleep(30000);
} catch (InterruptedException e1) {
e1.printStackTrace();
}
}
Когда я отправляю, например, три экземпляра MyRunnable вышеупомянутому однопоточному исполнителю, я ожидаю, что первая задача будет выполняться, и из-за того, что Thread.sleep имеет свой выполняющийся поток в TIMED_WAITING (я могу ошибаться насчет конкретного состояния). У двух других задач не должно быть потоков, назначенных для их выполнения, по крайней мере, до тех пор, пока первая задача не будет завершена.
Итак, мой вопрос заключается в том, как получить это состояние через FutureTask API или каким-то образом добраться до потока, который выполняет задачу. (если такого потока нет, тогда задача ожидает выполнения или ожидает выполнения) и получить свое состояние или, возможно, каким-либо другим способом?
FutureTask определяет только методы isCanceled () и isDone (), но их недостаточно для описания всех возможных статусов выполнения Задачи.