APP下载

任务定时调度在企业级开发中的研究

2015-04-25孙忠林

电子科技 2015年10期
关键词:作业

王 秀,孙忠林,姜 莉

(山东科技大学 信息科学与工程学院,山东 青岛266590)

在企业级应用开发中,为了提高系统的效率,需要进行基于给定时间点,给定时间间隔或者给定执行次数的任务。随着业务流程复杂性的提升,自动化流程的益处显现更加明显,如企业网站非法用户解锁功能,需要实现每30 min对非法IP解锁的需求,这些任务无需人机交互,只需在系统后台运行。任务调度能较好满足企业应用的需求,更好地实现自动化。在Java的应用开发有多种多样的方法提供定时任务调度。

本文从实现原理和程序设计的角度分析3种任务调度的方式,包括使用JDK Timer,使用基于ScheduledExecuter接口的实现和使用Quartz调度器,满足复杂多样的任务定时调度。JDK Timer适用于特定时间点执行或以固定周期运行的任务,ScheduledExecuter可并发的完成定时任务,而Quartz可根据调度策略执行复杂的调度需求[1]。

1 使用JDK Timer调度任务

1.1 JDK Timer的原理

实现Timer的核心是Tasklist和TaskThread,Timer将接收到的任务存放在TimerList中,TimerList按照Task的最初执行时间进行排序。TimerThread在创建Timer时会启动成为一个守护线程。这个线程会轮询所有任务,找到一个最近要执行的任务,然后休眠,当到达最近要执行任务的开始时间点,TimerThread被唤醒并执行该任务,之后TimerThread循环更新最近一个要执行的任务,继续休眠。

1.2 使用JDK Timer实现任务调度

创建一个TimerTask的继承类,实现自身的run方法,然后将其交给Timer去执行。

public class MyTask extends TimerTask{

Public void run(){…}}

Timer time=new Timer();

MyTask task=new MyTask();

time.schedule(task,0,2000)//每隔2 s执行一次

Timer的优点在于简单易用,但Timer对任务的调度基于绝对时间且是单线程执行,因此同一时刻只能执行一个任务。……

登录APP查看全文

猜你喜欢

作业
作业,我终于打败你了!
让人羡慕嫉妒恨的“作业人”
作业联盟
谁没交作业
修改“作业”
跟一群抄作业的讲垂直进步?
作业
我想要自由
三十六计第七计:无中生有