Я пытаюсь понять, как работает FutureTask
в Collections
. Из того, что я прочитал, я понимаю, что вы можете создать пул потоков, используя ExecutorService
. Позже вы можете заключить Runnable
или Callable
в FutureTask
и выполнить его. После этого вы можете использовать объект Future для проверки получения результатов или проверки выполнения задачи. Но как это сделать внутри?
Я пытаюсь понять, что происходит за кулисами, когда вы передаете интерфейс Callable. У меня есть несколько вопросов
Сам FutureTask запускает поток внутри, чтобы постоянно проверять, завершила ли команда Callable выполнение? Если нет, то как узнать, когда команда завершена?
Как работает метод get ()? Как он получает значение, возвращаемое из интерфейса Callable?
Глядя на документацию, я не мог понять многого. Есть ли какой-нибудь пример кода, на который я могу взглянуть, чтобы понять, что происходит за кулисами.