我有一个singleThreadExecutor以便以串行顺序执行提交给它的任务,即一个任务接一个,没有并行执行。
我有可运行的东西,像这样
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的所有可能的执行状态。