Spring任务调度

quartzJob${cron.expression}

timerJob30000086400000

该配置在延迟5分钟后,每个24小时执行一次myService中的timerJob方法,如果更加细致的调度,网站空间,香港空间,则timer显得力不从心!

三、Jdk Executor

1.JDK5.0中的java.util.concurrent包,提供了功能强大、更高层次的线程构造器。执行器Executor是并发工具包中的一个重要的类,它对Runnable实例的执行进行了抽象,实现者可以提供具体的实现:如简单的以一个线程来运行Runnable,或者通过一个线程池为Runnable提供共享线程。其将“任务提交”和“任务执行”两者分离解耦。

Executor只有一个方法:void execute(Runnable command),接收实现了Runnable的实例,代表了一个待执行的任务。Executor接口还有两个子接口:ExecutorService和SchedulerExecutorService,香港服务器,前者添加了结束任务的管理方法,后者可以对任务进行调度。

JDK ThreadPoolExecutor类实现了Executor和ExecutorService接口,其使用线程池对任务进行调度。创建线程的开销较大,因此最好能重用同一个线程,动态创建线程池中的线程,防止资源消耗引发的系统性能问题。ThreadPoolExecutor的子类ScheduledThreadPoolExecutor实现ScheduledExecutorService接口,添加了对人物的调度功能。

java.util.concurrent中提供了一个综合性的工厂类Executors,它拥有很多静态工厂方法:

public static ExecutorService newFixedThreadPool(int nThreads):创建一个线程池,重复使用一个固定的线程运行一个共享的无界队列。

public static ExecutorService newCachedThreadPool():线程池是动态的,不够用时创建新的线程,长时间不用的线程将被回收。

public static ScheduledExecutorService newScheduledThreadPool(int corePoolSize,ThreadFactory threadFactory):创建一个线程池,可在指定延迟后运行或者定期地执行。

2.spring与executor

spring的发现包中预定义了一些TaskExecutor实现。org.springframework.core.task.TaskExecutor接口的实现类很多,且有一个子接口SchedulingTaskExecutor。

SyncTaskExecutor:该实现不会异步执行任务,每次调用都在发起调用的主线程中。

下面是SchedulingTaskExecutor的实现类:

SimpleAsynTaskExecutor:这个实现没有实现使用线程池,在每次执行任务时都创建一个新线程,支持对并发总数设限

ConcurrentTaskExecutor:该类是JDK Executor的适配器,以便将JDK Executor当成spring的TaskExecutor使用

SimpleThreadPoolTaskExecutor:其是SimpleThreadPool的子类,监听spring的生命周期回调,当用户有线程池,需要Quartz和非Quartz组件中共用时,其发挥作用。

ThreadPoolTaskExecutor:其只可在JDK 5.0中使用,方便spring中配置一个ThreadPoolExecutor,并把它包装成TaskExecutor

TimerTaskExecutor:该类使用一个Timer作为其后台的实现。

如果前世五百次眸回,才换来今生的擦肩而过。

Spring任务调度

相关文章:

你感兴趣的文章:

标签云: