私は、タスクを実行するためにsingleThreadExecutorを持っています。つまり、並行して実行されないタスクが1つずつ順番に実行されます。以下のようなものだFutureTaskの実行状態を取得する方法は?
私が実行可能にしていこの
MyRunnable implements Runnable {
@Override
public void run() {
try {
Thread.sleep(30000);
} catch (InterruptedException e1) {
e1.printStackTrace();
}
}
私が提出した場合、例えば、前述のシングルスレッド実行者へMyRunnableの3つのインスタンスは、私が持っていることを期待します実行中の最初のタスクと、Thread.sleepのためにTIMED_WAITINGにその実行スレッドがあります(特定の状態について間違っている可能性があります)。他の2つのタスクは、少なくとも最初のタスクが終了するまでスレッドを実行するよう割り当てられていてはなりません。
私の質問は、FutureTask APIを介してこの状態を取得するか、何らかの形でそのタスクを実行しているスレッドに到達する方法です(そのようなスレッドがない場合、タスクは実行または保留中です)おそらく何か他の手段によって?
FutureTaskは、isCanceled()メソッドとisDone()メソッドのみを定義しますが、タスクの実行可能な状態をすべて説明するには十分ではありません。
質問はなぜisDone()以外に必要なのですか? – bestsss