最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Springboot的ThreadPoolTaskScheduler線程池輕松搞定15分鐘不操作自動取消訂單

 更新時間:2025年01月10日 12:17:35   作者:rain_is_my_name  
這篇文章主要介紹了Springboot的ThreadPoolTaskScheduler線程池輕松搞定15分鐘不操作自動取消訂單,本文給大家介紹的非常詳細,需要的朋友可以參考下

ThreadPoolTaskScheduler線程池實現(xiàn)15分鐘不操作自動取消訂單

概要

使用ThreadPoolTaskScheduler的schedule方法實現(xiàn)當(dāng)前操作15分鐘后執(zhí)行定時任務(wù)

1,創(chuàng)建訂單后觸發(fā)

1.1 Impl層

 private final OrderSchedulerService schedulerService;
 @Override
    @Transactional(rollbackFor = Exception.class)
    public R saveHotelOrder(HotelOrderPO po) {
        HotelOrder order = new HotelOrder();
        boolean saveOrUpdate = saveOrUpdate(order);
        // 補充自己的開發(fā)邏輯
        if(條件滿足){
        	 schedulerService.createScheduler(order.getId());
        }
        return R.data(order.getId());
    }

1.2 OrderSchedulerService(核心類)

@Slf4j
@Service
@AllArgsConstructor
public class OrderSchedulerService {
    private final HotelOrderMapper hotelOrderMapper;
    private final ThreadPoolTaskScheduler taskScheduler = new ThreadPoolTaskScheduler();
    private final ConcurrentHashMap<Long, ScheduledFuture<?>> orderTasks = new ConcurrentHashMap<>();
    // 模擬用戶新增訂單
    public void createScheduler(Long orderId) {
        taskScheduler.initialize();
        // 15分鐘后執(zhí)行
        Instant plus = Instant.now().plus(Duration.ofMinutes(15));
        ScheduledFuture<?> future = taskScheduler.schedule(() -> {
            if (isOrderActive(orderId)) {
                // 取消訂單
                HotelOrder order = hotelOrderMapper.selectById(orderId);
                order.setStatus(CommonConstant.INT_5);
                hotelOrderMapper.updateById(order);
                log.info("15分鐘未操作,自動取消訂單:{}", order.getSerialNumber());
            }
        }, plus);
        orderTasks.put(orderId, future);
    }
    // 訂單取消時,取消訂單的15分鐘定時任務(wù)
    public void cancelScheduler(Long orderId) {
        ScheduledFuture<?> future = orderTasks.get(orderId);
        if (future != null && !future.isDone()) {
            future.cancel(false);
            orderTasks.remove(orderId);
            log.info("15分鐘有支付操作,取消訂單定時任務(wù):{}", orderId);
        }
    }
    // 檢查訂單是否仍在任務(wù)列表中(模擬訂單未刪除)
    private boolean isOrderActive(Long orderId) {
        return orderTasks.containsKey(orderId);
    }
}

2,訂單手動取消則取消該訂單對應(yīng)的定時任務(wù)

1.1 Impl層

 @Override
    public R cancelByIdForMini(Long id, String reason) {
    	// 寫自己的取消業(yè)務(wù)
        // 訂單取消時,取消訂單的15分鐘定時任務(wù)
        log.info(" 訂單取消時,取消訂單的15分鐘定時任務(wù):{}", id.toString());
        schedulerService.cancelScheduler(id);
        return R.status(true);
    }

總結(jié)

使用ThreadPoolTaskScheduler的schedule方法實現(xiàn)當(dāng)前操作15分鐘后執(zhí)行定時任務(wù)~
創(chuàng)作不易,尊重知識,轉(zhuǎn)載請附帶本文鏈接

到此這篇關(guān)于Springboot的ThreadPoolTaskScheduler線程池輕松搞定15分鐘不操作自動取消訂單的文章就介紹到這了,更多相關(guān)Springboot ThreadPoolTaskScheduler線程池內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java代理模式實例分析

    Java代理模式實例分析

    這篇文章主要介紹了Java代理模式,結(jié)合實例形式對比分析了java代理模式的使用方法與相關(guān)操作技巧,需要的朋友可以參考下
    2019-07-07
  • ThreadLocal的set方法原理示例解析

    ThreadLocal的set方法原理示例解析

    這篇文章主要為大家介紹了ThreadLocal的set方法原理示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-02-02
  • Spring 處理 HTTP 請求參數(shù)注解的操作方法

    Spring 處理 HTTP 請求參數(shù)注解的操作方法

    這篇文章主要介紹了Spring 處理 HTTP 請求參數(shù)注解的操作方法,本文通過實例代碼給大家介紹的非常詳細,感興趣的朋友參考下吧
    2024-04-04
  • java設(shè)計模式學(xué)習(xí)之策略模式

    java設(shè)計模式學(xué)習(xí)之策略模式

    這篇文章主要為大家詳細介紹了java設(shè)計模式學(xué)習(xí)之策略模式的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-10-10
  • Java調(diào)用Windows的DOS命令的方法

    Java調(diào)用Windows的DOS命令的方法

    這篇文章主要介紹了Java調(diào)用Windows的DOS命令的方法,其主要內(nèi)容思路是實現(xiàn)調(diào)用Windows的ipconfig命令,然后將輸出的信息通過IO流輸出到控制臺。有需要的小伙伴參考下
    2015-02-02
  • Java身份證驗證方法實例詳解

    Java身份證驗證方法實例詳解

    這篇文章主要介紹了Java身份證驗證方法實例詳解的相關(guān)資料,需要的朋友可以參考下
    2017-04-04
  • Java并發(fā)工具類Phaser詳解

    Java并發(fā)工具類Phaser詳解

    這篇文章主要介紹了Java并發(fā)工具類Phaser詳解,Phaser(階段協(xié)同器)是一個Java實現(xiàn)的并發(fā)工具類,用于協(xié)調(diào)多個線程的執(zhí)行,它提供了一些方便的方法來管理多個階段的執(zhí)行,可以讓程序員靈活地控制線程的執(zhí)行順序和階段性的執(zhí)行,需要的朋友可以參考下
    2023-11-11
  • 使用IDEA開發(fā)配置Java Web的初始化過程

    使用IDEA開發(fā)配置Java Web的初始化過程

    該教程使用idea開發(fā)工具初始化javaweb項目,該運行在tomcat服務(wù)器上通過配置項目環(huán)境變量保證tomcat正常啟動,具體操作配置教程參考下本文
    2021-06-06
  • java String的深入理解

    java String的深入理解

    這篇文章主要介紹了java String的深入理解的相關(guān)資料,希望通過本文大家能理解String的用法,需要的朋友可以參考下
    2017-09-09
  • Java 高并發(fā)七:并發(fā)設(shè)計模型詳解

    Java 高并發(fā)七:并發(fā)設(shè)計模型詳解

    本文主要介紹Java高并發(fā) 并發(fā)設(shè)計模型的知識,這里主要講解 1. 什么是設(shè)計模式 2. 單例模式 3. 不變模式 4. Future模式 5. 生產(chǎn)者消費者,有需要的小伙伴可以參考下
    2016-09-09

最新評論

锡林浩特市| 裕民县| 博乐市| 呼玛县| 富平县| 广平县| 涪陵区| 衢州市| 保靖县| 彩票| 丘北县| 同心县| 高邮市| 大竹县| 宝清县| 邵阳县| 湾仔区| 姚安县| 韶山市| 扶沟县| 凤台县| 定襄县| 乌鲁木齐市| 宜宾市| 本溪| 施秉县| 融水| 什邡市| 上林县| 太仓市| 陇西县| 黔西| 古浪县| 彭水| 西林县| 昆山市| 万山特区| 苍山县| 通城县| 滕州市| 华池县|