Разница и предложить ThreadPoolTaskExecutor и ThreadPoolExecutor

#java #multithreading #threadpool #threadpoolexecutor

#java #многопоточность #threadpool #threadpoolexecutor

Вопрос:

Я хочу знать основное различие между ThreadPoolTaskExecutor и ThreadPoolExecutor. Какой из них я должен выбрать и почему?

Комментарии:

1. Начните с их соответствующего Javadoc.

Ответ №1:

Посмотрите ссылку на документацию, чтобы четко понять различия.

ThreadPoolExecutor

ExecutorService, который выполняет каждую отправленную задачу, используя один из, возможно, нескольких объединенных потоков, обычно настраивается с использованием заводских методов исполнителей.

Пулы потоков решают две разные проблемы: они обычно обеспечивают повышенную производительность при выполнении большого количества асинхронных задач из-за снижения накладных расходов на вызов каждой задачи, и они предоставляют средства ограничения и управления ресурсами, включая потоки, потребляемые при выполнении набора задач.

ThreadPoolTaskExecutor

JavaBean, который позволяет настраивать a ThreadPoolExecutor в стиле bean (через его свойства «corePoolSize«, «maxPoolSize«, «keepAliveSeconds«, «queueCapacity«) и предоставлять его как Spring TaskExecutor.

Этот класс также хорошо подходит для управления и мониторинга (например, через JMX), предоставляя несколько полезных атрибутов: «corePoolSize«, «maxPoolSize«, «keepAliveSeconds» (все поддерживающие обновления во время выполнения); «poolSize«, «activeCount» (только для самоанализа).

Ответ №2:

Они в основном идентичны с точки зрения функциональности. Разница в том, хотите ли вы инициализировать его с помощью конструктора (рекомендуется, если он создан в коде Java) или с помощью установщиков (рекомендуется, если создан в Spring).