sping中配置线程池
<bean id="taskExecutor" class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor">
<!-- 线程池活跃的线程数 --><property name="corePoolSize" value="20" />
<!-- 线程池最大活跃的线程数 -->
<property name="maxPoolSize" value="100" />
<!-- 队列的最大容量 -->
<property name="queueCapacity" value="100" />
</bean>
业务service里面使用
注入
@Resource(name = "taskExecutor")
private TaskExecutor threadPoolExecutor;
使用:
List<Order> resultOrder方法参数
public void batchUpdateOrderOfSettle(List<Order> resultOrder){
final CopyOnWriteArrayList<Order> tempArrayList = new CopyOnWriteArrayList<Order>();
tempArrayList.addAll(resultOrder);
threadPoolExecutor.execute(new Runnable() {
@Override
public void run() {
try {
for(Order order : tempArrayList){
OrderDetail orderDetail = transformObj(order);
orderDetailAccessService.save(orderDetail, null);
}
} catch (Exception e) {
LOGGER.error(e.toString(), e);
}
}
});
}
把Order部分属性转换到OrderDetail
public OrderDetail transformObj(Order order){
OrderDetail orderDetail = new OrderDetail();
if(null!=order){
if(null != order.getPayTime()){
orderDetail.setPayTime(order.getPayTime());
}
中间代码省略
}
return orderDetail;
}