Java的ScheduledThreadPoolExecutor类实现了ScheduledExecutorService接口中定义的以不同方法执行任务的方法。 应用场景:在做数据统计、记录日志等操作的时候,如果项目没有使用消息队列,可以使用延迟执行任务。例子如下:
import java.util.TimerTask;
import java.util.concurrent.ScheduledThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
/**
* 异步任务
*/
public class TaskManager {
/**
* 操作延时
*/
private final int OPERATE_DELAY_TIME = 10;
/**
* 异步操作线程池
*/
private ScheduledThreadPoolExecutor executor = new ScheduledThreadPoolExecutor(10);
private TaskManager() {
}
public static TaskManager taskManager = new TaskManager();
public static TaskManager me() {
return taskManager;
}
public void executeLog(TimerTask task) {
executor.schedule(task, OPERATE_DELAY_TIME, TimeUnit.MILLISECONDS);
}
}
接下来:
import java.util.concurrent.TimeUnit;
/**
* 任务创建工厂
*
*/
public class TaskFactory {
public static TimerTask myTask() {
return new TimerTask() {
@Override
public void run() {
// 在这里写延时任务的代码
}
};
}
}
调用方法:
TaskManager.me().executeLog(TaskFactory.myTask());