业务扫描
@Scheduled(cron = “0/30 * * * * ?”)
public void checkUnpaidOrder() {
System.out.println(“开始检查未付款单据 = “);
Long beginTime=System.currentTimeMillis();
List<OrderInfo> unpaidOrderList = orderService.getUnpaidOrderList();
for (OrderInfo orderInfo : unpaidOrderList) {
orderService.checkExpireOrder(orderInfo);
}
Long costtime=System.currentTimeMillis()-beginTime;
System.out.println(“开始检查完毕未付款单据 = 共消耗”+costtime);
}
|
public void checkExpireOrder(OrderInfo orderInfo ) {
updateProcessStatus(orderInfo.getId(), ProcessStatus.CLOSED);
paymentService.closePayment(orderInfo.getId());
return ;
}
|
4 利用多线程实现异步并发操作
@Configuration
@EnableAsync
public class AsyncTaskConfig implements AsyncConfigurer {
@Override
@Bean
public Executor getAsyncExecutor() {
ThreadPoolTaskExecutor threadPoolTaskExecutor=new ThreadPoolTaskExecutor();
threadPoolTaskExecutor.setCorePoolSize(10); //线程数
threadPoolTaskExecutor.setQueueCapacity(100); //等待队列容量 ,线程数不够任务会等待
threadPoolTaskExecutor.setMaxPoolSize(50); // 最大线程数,等待数不够会增加线程数,直到达此上线 超过这个范围会抛异常
threadPoolTaskExecutor.initialize();
return threadPoolTaskExecutor;
}
@Override
@Bean
public AsyncUncaughtExceptionHandler getAsyncUncaughtExceptionHandler() {
return null;
}
}
|
在代码中的方法上可以标记@Async
@Async
public void checkExpireOrder(OrderInfo orderInfo ) {
Date expireDate= DateUtil.addDays(orderInfo.getCreateTime(),1) ;
if (new Date().after(expireDate)){
updateProcessStatus(orderInfo.getId(), ProcessStatus.CLOSED);
paymentService.closePayment(orderInfo.getId());
}
return ;
}
|

想要了解跟多关于大数据培训课程内容欢迎关注尚硅谷大数据,尚硅谷除了这些技术文章外还有免费的高质量大数据培训课程视频供广大学员下载学习
上一篇:
React 元素渲染_前端培训
下一篇:
要怎么样才能看出一家大数据培训机构的好坏呢