我有一个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() 方法,但不足以描述 Task 的所有可能执行状态。