定时执⾏java程序_如何让Java程序定时运⾏
由于项⽬开发的需要,必须实现让⼀个Java程
大数据与会计>保卫萝卜挑战攻略39序定时运⾏。⽐如,我的项⽬中,有⼀个⽹络蜘蛛,需要从互联⽹上抓取数据,与其配合,有另⼀个程序来对新抓取的页⾯进⾏索引的创建,由于数据源更新频率不
⾼,我们不可能让蜘蛛⽆休⽆⽌地⼯作,或者忙等待新数据的产⽣,那样只能造成浪费,⽽且⾮常地不礼貌,所以最理想的情况是,让它每隔⼀个⼩时运⾏⼀次,这
样⼀天也就运⾏不了⼏次。
那么如何才能实现让⼀个Java程序定时运⾏呢?Java基本类库⾥⾯,提供了两个⼯具供我们使⽤,它们是java.util.Timer和
beat it歌词大意java.util.TimerTask。
Timer是⼀个对象,这个对象在初始化之初,会创建⼀个后台进程(TimerThread),同时创建⼀个任务队列(TaskQueue),然后
后台进程开始检测TaskQueue中是否存在等待调度的任务,如果存在,就运⾏之,如果不存在,就等待(Object.wait())。
对于程序员可见的类是Timer和TimerTask,TimerTask是⼀个抽象类,是能够被Timer所调度的⼀种对象,所有希望定时执⾏的任务,只要实现TimerTask类即可,然后使⽤Timer的schedule⽅法,给定⼀定的参数,即可实现定时执⾏,或者周期执⾏。
国内景点schedule⽅法的本质,是将⼀个TimerTask对象添加到了TaskQueue中,这个TaskQueue是⼀个堆(可以动态增长),可以管理很多的Task。
Timer的本质,就是⼀个线程,按照指定的时间顺序,来顺次执⾏⼀个⼜⼀个的任务,根据这种性质,我们可以知道,Timer实现的定时不可能准
冒字查什么部首确,⽽且,还会收到任务本⾝耗费时间的⼲扰。如果前⼀个任务执⾏时间过长,超过后⼀个任务的启动时间,则后⼀个任务的启动时间必然要顺延。所以,这种⽅
法,只能⽤于,任务短⼩,且对时间精度要求不⾼的语境。
dnf疲劳Timer是线程安全的,可以实现并发访问。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论