Кстати, я взглянул на FutureTask, и он, похоже, не тот, который мне нужен, потому что он требует от клиента ожидания его завершения в какой-то момент.
Вам не нужно вызывать FutureTask.get () из исходного потока, чтобы получить результаты задачи. Вы можете просто передать Callable
в FutureTask
и обработать его вывод в какой-либо другой компонент. Существуют методы get()
, так что вы можете получить результаты асинхронного вычисления, которое может включать ожидание завершения вычисления, если оно еще не выполнено.
Если вы предпочитаете стиль обратного вызова, вы можете просто заставить Callable вызывать обратный вызов вашей собственной конструкции или обрабатывать результат самостоятельно.