TaskExecutor和TaskSchedulerspring
TaskExecutor是spring task的第一个抽象,它很天然让人联想到jdk中concurrent包下的Executor
,实际上TaskExecutor就是为区别于Executor
才引入的,而引入TaskExecutor的目的就是为定时任务的执行提供线程池的支持,那么,问题来了,为何spring不直接使用jdk自带的Executor呢?TaskExecutor源码以下?线程
public interface TaskExecutor extends Executor { void execute(Runnable var1); }
那么,答案很显然,TaskExecutor提供的线程池支持也是基于jdk自带的Executor的。用法于Executor没有什么不一样。code
TaskScheduler是spring task的第二个抽象,那么从字面的意义看,TaskScheduler就是为了提供定时任务的支持咯。TaskScheduler须要传入一个Runnable的任务作为参数,并指定须要周期执行的时间或者触发器,这样Runnable任务就能够周期性执行了。传入时间很好理解,有意思的是传入一个触发器(Trigger
)的状况,由于这里须要使用cron表达式去触发一个定时任务,因此有必要先了解下cron表达式的使用。源码
在spring 4.x中已经不支持7个参数的cronin表达式了,要求必须是6个参数jdk