Tengo un singleThreadExecutor para ejecutar las tareas que le presento en orden serial, es decir, una tarea tras otra, sin ejecución paralela.¿Cómo llegar al estado de ejecución de FutureTask?
tengo ejecutable, que es algo como esto
MyRunnable implements Runnable {
@Override
public void run() {
try {
Thread.sleep(30000);
} catch (InterruptedException e1) {
e1.printStackTrace();
}
}
Cuando envío, por ejemplo, tres casos de MyRunnable al ejecutor solo hilo antes mencionado, yo esperaría a tener la primera ejecución de tareas y debido a Thread.sleep tiene su hilo de ejecución en TIMED_WAITING (puedo estar equivocado sobre el estado específico). Las otras dos tareas no deberían tener hilos asignados para ejecutarlas, al menos no hasta que la primera tarea haya finalizado.
Así que mi pregunta es cómo obtener este estado a través de la API FutureTask o de alguna manera llegar al hilo que está ejecutando la tarea (si no existe dicho hilo, la tarea está esperando ser ejecutada o pendiente) y obtener su estado o tal vez por otros medios?
FutureTask solo define los métodos isCanceled() e isDone(), pero estos no son suficientes para describir todos los posibles estados de ejecución de la Tarea.
la pregunta es: ¿por qué necesita algo además de isDone()? – bestsss