#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
как компонент.