Потому что вы можете использовать Будущее для других вещей. Вам дается будущее, когда вы отправляете(). Таким образом, вы можете в первую очередь использовать объект Future, возвращенный для контроля состояния или отсрочки досрочно. Во-вторых, если вы измените futureFactory() (я думаю, что он называется чем-то другим, но у меня установлен Java 5, но не 6) вы можете добавить все виды дополнительных членов в будущий объект.
Итак, при выполнении take() вы правы, что в этом случае часть будущего (отслеживание/аннулирование состояния) не очень полезна. Но OTOH, почему бы не вернуть все будущее, как есть, включая расширенную функциональность?
Кроме того, есть простой ответ на конструктивную симметрию. Хотя это правда, если вы выполняете() через службу завершения, будущее не так полезно, как необработанное представление задачи, оно используется для всех других аспектов подачи услуг типа «Исполнитель», некоторые из которых являются критическими в использовании для. – MJB
Отлично, спасибо. – jfager