日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java quartz没执行完_quartz 防止上一任务未执行完毕,下一时间点重复执行

發布時間:2023/12/2 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java quartz没执行完_quartz 防止上一任务未执行完毕,下一时间点重复执行 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

/*** 訂單監控類

* 定時掃描所有待付款訂單,超時自動取消

* Created by huangbaidong

* 2017/3/29.*/@Componentpublic classOrderMonitorJob {

@ResourceprivateRedisUtil redisUtil;

@ResourceprivateBsdOrderService bsdOrderService;

@ResourceprivateBsdDFKOrderCacheManager bsdDFKOrderCacheManager;private boolean isLock = false;/*** 待付款訂單定時掃描類

* 定時掃描所有待付款訂單,超時自動取消*/

public voidpaymentTimeoutScan() {if(!isLock) {//加鎖,防止定時器重復執行,

isLock = true;try{

List orders =bsdDFKOrderCacheManager.getAll();if(BlankUtil.isNotEmpty(orders)) {

List removeIds = new ArrayList<>();//需要移除的訂單

for(BsdDFKOrderCacheEntity order : orders) {if (Dictionary.ORDER_STATUS_DFK ==order.getOrderStatus()) {boolean isExpire = false;if (order.isHasPromotion() == 1) {//如果是有促銷規則的訂單,1小時未支付,自動取消訂單

if (System.currentTimeMillis() - order.getOrderTime().getTime() >CommonConstants.hasRulePayTimeout) {

isExpire= true;

}

}else{//如果是沒有促銷規則的訂單,24小時未支付,自動取消訂單

if (System.currentTimeMillis() - order.getOrderTime().getTime() >CommonConstants.hasNotRulePayTimeout) {

isExpire= true;

}

}if(isExpire) {//1、自動取消訂單(操作人ID傳0)

bsdOrderService.cancel(order.getId(), 0l);//2、記錄過期的訂單,將訂單從緩存中清除

removeIds.add(order.getId().toString());

System.out.println("------>訂單[" + order.getCode() + "]超時未付款自動取消訂單");

}

}else{//不是待付款狀態的訂單,記錄從緩存中清除

removeIds.add(order.getId().toString());

}

}//將不是待支付狀態的訂單,以及過期的未支付的訂單從緩存中刪除

if(BlankUtil.isNotEmpty(removeIds)) {

bsdDFKOrderCacheManager.removeFromCache(removeIds);

}

}

}finally{//運行完后釋放鎖

isLock = false;

}

}

}

}

總結

以上是生活随笔為你收集整理的java quartz没执行完_quartz 防止上一任务未执行完毕,下一时间点重复执行的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。