package com.nq.utils.task.stock; import com.nq.enums.EStockType; import com.nq.service.UserPendingorderService; import lombok.extern.slf4j.Slf4j; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; /** * @program: dabaogp * @description: * @create: 2024-09-04 14:23 **/ @Component @Slf4j public class OrderTask { private final AtomicBoolean syncINStockData = new AtomicBoolean(false); private final Lock syncINStockDataLock = new ReentrantLock(); @Autowired private UserPendingorderService pendingorderService; /** * 挂单 */ @Scheduled(cron = "0/10 * * * * ?") public void syncINStockData() { if (syncINStockData.get()) { // 判断任务是否在处理中 return; } if (syncINStockDataLock.tryLock()) { try { syncINStockData.set(true); // 设置处理中标识为true pendingorderService.orderTask(); } finally { syncINStockDataLock.unlock(); syncINStockData.set(false); // 设置处理中标识为false } } } }