定时任务TimerTask实现异步操作
1、创建任务管理器TaskManager
import java.util.TimerTask; import java.util.concurrent.ScheduledThreadPoolExecutor; import java.util.concurrent.TimeUnit; /** * @ClassName: TaskManager * @Description:任务管理 * @author: Ccl * @date: 2021年7月8日 上午10:23:33 * @Copyright: */ public class TaskManager { /** 延时*/ private final int OPERATE_DELAY_TIME = 10; /** 操作线程池*/ private ScheduledThreadPoolExecutor executor = new ScheduledThreadPoolExecutor(50); /** 单例*/ public static TaskManager manager = new TaskManager(); private TaskManager() { } /** 获取唯一实例*/ public static TaskManager get() { return manager; } /** 执行定时任务,默认延迟 OPERATE_DELAY_TIME*/ public void execute(TimerTask task) { execute(task,OPERATE_DELAY_TIME); } /** 执行定时任务,手动设置延迟*/ public void execute(TimerTask task, int delay) { executor.schedule(task, delay, TimeUnit.MILLISECONDS); } }
2、创建任务工厂接口类TransferTaskService
/** * @ClassName: TransferTaskService * @Description: 任务工厂接口类 * @author: Ccl * @date: 2021年7月8日 上午10:26:27 * @Copyright: */ public interface TransferTaskService { /** 生成中转费*/ public TimerTask createTransferOrderAmt(Integer orderId,ScuserTicket ticket); }
3、实现任务工厂接口
@Service("transferTaskService") public class TransferTaskServiceImpl implements TransferTaskService{ @Autowired OrderTransferService orderTransferService; @Override public TimerTask createTransferOrderAmt(Integer orderId,ScuserTicket ticket) { // TODO Auto-generated method stub return new TimerTask() { @Override public void run() { orderTransferService.createTransferOrderAmt(orderId,ticket);//具体操作 } }; } }
4、调用
//生成中转费,延迟1秒执行 TaskManager.get().execute(transferTaskService.createTransferOrderAmt(entity.getOrderId(), ticket),1000);
                    
                
                
            
        
浙公网安备 33010602011771号