final CountDownLatch down = new CountDownLatch(newsList.size()); for(final NewsEntity newsEntity : newsList) { taskExecutor.submit(new Callable<Boolean>() { @Override public Boolean call() throws Exception { try { write(newsEntity);//調用處理分析數據 deleteOrgNewsById(newsEntity.getOriginalNewsUid());//刪除分析事後源數據 }finally { down.countDown(); } return true; } }); } down.await();
配置線程池xmljava
<bean id="taskExecutor" class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor" lazy-init="false"> <property name="corePoolSize" value="${threadpool.corePoolSize}" /> <property name="maxPoolSize" value="${threadpool.maxPoolSize}" /> <property name="queueCapacity" value="${threadpool.queueCapacity}" /> <!-- <property name="keepAliveSeconds" value="${threadpool.keepAliveSeconds}" />--> </bean>