Кэшированный пул потоков в Spring Framework

#java #spring #concurrency #threadpool

#java #весна #параллелизм #пул потоков

Вопрос:

Мое приложение использует Spring 3.0.5 Release . У меня есть коллекция с более чем 10000 объектами. В соответствии с моими бизнес-требованиями мне нужно просмотреть каждое свойство и привязать к pojo в get another collection. Функция / процесс обрабатывается одним запросом / потоком.

Я столкнулся. org.springframework.scheduling.concurrent.ConcurrentTaskExecutor Я попытался его реализовать.

Но по сравнению с обычной задержкой процесса это занимает в 2 раза больше времени.Думаю, что это не повторное использование потока. Каждый раз, когда его порождает новый поток, потребляет ресурс.

Итак, как я могу реализовать кэшированный пул потоков параллелизма Java с помощью Spring Framework.

Ответ №1:

Исходный код этого класса сообщает нам, что по умолчанию используется using Executors.newSingleThreadExecutor()) , так что вы правы в своей оценке. Однако Javadocs сообщают нам, что есть конструктор, который позволяет вам передавать любой исполнитель JDK, который вы пожелаете. Кроме того, сводка для этого класса сообщает нам, что Spring имеет a ThreadPoolTaskExecutor , который позволяет настраивать a ThreadPoolExecutor как компонент.