С JDK> = 1.5, должен предпочтительный способ запустить поток всегда быть Сервисом Исполнителя или Исполнителя или там все еще причины предпочесть использовать Thread.start, если Вам не нужно в том, что обеспечивает ExecutorService?
Для синхронизируемого я раньше думал, что с помощью новой Блокировки implemenations был предпочтен, пока мне не объяснили иначе. Таким образом, я задаюсь вопросом то же самое об Исполнителях. Они - просто способ обработать более сложные случаи, или они должны быть стандартным выбором?
Лично я, начиная с Java 5, полностью отказался от Thread
и ThreadGroup
, поскольку они предоставляют гораздо меньше настроек и функциональности, чем ExecutorService
.
При использовании ExecutorService
я знаю, что могу использовать Callable
, я знаю, что могу (с небольшими накладными расходами) планировать повторяющиеся задачи. Как следствие, я считаю прямое инстанцирование объектов Thread
устаревшим кодом, как Vector
и Hashtable
.
Параллелизм в Java на практике , по крайней мере, четко указано в разделе 6.2.:
Первичная абстракция для выполнения задач в библиотеках классов Java - это не
Thread
, аИсполнитель
. [...]Использование Executor - обычно самый простой путь к реализации дизайна производителя-потребителя в вашем приложении.