Check Callable , который является Runnable, который может вернуть результат.
Вы используете это так:
Вы пишете Callable вместо Runnable, например:
public class MyCallable implements Callable<Integer> {
public Integer call () {
// do something that takes really long...
return 1;
}
}
Вы отказываетесь от него, отправляя его в службу ExecutionService:
ExecutorService es = Executors.newSingleThreadExecutor ();
Future<Integer> task = es.submit(new MyCallable());
Возвращается дескриптор FutureTask , который будет содержать результат после завершения задачи:
Integer result = task.get ();
FutureTask предоставляет больше методов, таких как cancel
, isDone
и isCancelled
, чтобы отменить выполнение и запросить статус. Сам метод get блокирует и ожидает завершения задачи. проверьте Javadoc для деталей.