Как перейти в состояние выполнения FutureTask?

У меня есть 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 (), но их недостаточно для описания всех возможных статусов выполнения Задачи.

5
задан Svilen 3 August 2011 в 20:59
поделиться