Какой, по вашему мнению, лучший способ получения результатов работы потока? Представьте себе поток, который выполняет некоторые вычисления, как вы предупреждаете основную программу, в которой выполняются вычисления?
Вы могли бы опрашивать каждые X миллисекунд для некоторой общедоступной переменной, называемой «задание выполнено» или что-то еще, но тогда вы получите результаты позже, чем когда они будут доступны ... основной код будет терять время ожидания для них. С другой стороны, если вы используете более низкий X, процессор будет тратить столько времени на опрос.
Итак, что вы делаете, чтобы знать, что Нить или некоторые Нити завершили свою работу?
Извините, если он похож на этот другой вопрос , это, вероятно, причина ответа eben , я полагаю. Я имел в виду, что запускал много потоков и знал, когда все они закончили, не опрашивая их.
Я больше думал о распределении загрузки ЦП между несколькими ЦП с использованием пакетов потоков и знаю, когда пакет завершен. Я предполагаю, что это может быть сделано с Future s объектами, но этот блокирующий get метод очень похож на скрытую блокировку, а не на то, что мне нравится.
Спасибо всем за вашу поддержку. Хотя мне также понравился ответ erickson , я думаю saua самый полный, и тот, который я буду использовать в мой собственный код.