package com.ltkj.common.task; import org.springframework.stereotype.Component; import javax.annotation.PostConstruct; import java.util.concurrent.DelayQueue; import java.util.concurrent.Executors; @Component public class TaskService { private TaskService taskService; private DelayQueue delayQueue = new DelayQueue(); @PostConstruct private void init() { taskService = this; Executors.newSingleThreadExecutor().execute(new Runnable() { @Override public void run() { while (true) { try { Task task = delayQueue.take(); task.run(); } catch (Exception e) { e.printStackTrace(); } } } }); } public void addTask(Task task){ if(delayQueue.contains(task)){ return; } delayQueue.add(task); } public void removeTask(Task task){ delayQueue.remove(task); } }