package com.pz.system.datastructure; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import java.util.concurrent.DelayQueue; @Component public class OrderDelayQueue { private final DelayQueue<TotalOrderDelayOperator> delayQueue = new DelayQueue<>(); // 添加订单到延时队列 public void addOrder(TotalOrderDelayOperator order) { delayQueue.put(order); } // 处理过期订单 @Scheduled(fixedDelay = 30 * 60 * 1000) // 每30分钟触发一次任务 public void processExpiredOrders() { long currentTime = System.currentTimeMillis(); while (true) { TotalOrderDelayOperator order = delayQueue.peek(); if (order == null || order.getExpirationTime() > currentTime) { break; } order = delayQueue.poll(); order.operator(); } } }