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>