scheduleatfixedrateTimer和ScheduledThreadPoolExecutor的区别
scheduleatfixedrate 时间:2021-05-30 阅读:(
)
怎么用java做个定时器,每个星期一中午十二点开始执行doXX这一动作?
String rule;
if (args.length > 1) {
rule = args[0];
} else {
//每分钟都执行
rule = "0 * * * * ? *";
}
这个是每分钟执行的 你可以把正则表达式改了就行怎样用java做个定时器,每个星期一中午12点整执行doXX这一动作。越详细越好.用监听哥跪谢!
主类:
package tiwen4; import java.util.Calendar; import java.util.Timer; public class quartz { public static void main(String[] args) { try{ Calendar cal = Calendar.getInstance();//设置定时时间 cal.add(Calendar.DATE, 0);//表示从今天的12点开始跑起来,如果当前时间超过12点会马上跑一次,否则等12点再跑第一次 cal.set(Calendar.HOUR_OF_DAY, 12);//24小时制的,12就是中午12点 cal.set(Calendar.MINUTE, 0);//分 cal.set(Calendar.SECOND, 0);//秒 Timer processTimer = new Timer(); processTimer.scheduleAtFixedRate(new ProcessClass(), cal.getTime(), 86400000);//86400000是24小时,即24小时跑一次 }catch(Exception e){ e.printStackTrace(); }finally{ } } }
定时器调用的类--我在这里只是输出了一下~你也可以自己加函数:
package tiwen4; import java.util.TimerTask; public class ProcessClass extends TimerTask { @Override public void run() { // TODO Auto-generated method stub System.out.println("输出了哈哈");// } }
我上面用的只是一种方式,其实定时方式有很多的linux和window都有自带的定时器,可以直接调用,也可以用上面所说的quartz包带的框架等等Timer和ScheduledThreadPoolExecutor的区别
Timer的主要方法有:
// 安排在指定的时间执行
void schedule(TimerTask task, Date time)
// 安排在指定的时间开始以重复的延时执行
void schedule(TimerTask task, Date firstTime, long period)
// 安排在指定的延迟后执行
void schedule(TimerTask task, long delay)
// 安排在指定的延迟后开始以重复的延时执行
void schedule(TimerTask task, long delay, long period)
// 安排在指定的时间开始以重复的速率执行
void scheduleAtFixedRate(TimerTask task, Date firstTime, long period)
// 安排在指定的延迟后开始以重复的速率执行
void scheduleAtFixedRate(TimerTask task, long delay, long period)
注:重复的延时和重复的速率的区别在于,前者是在前一个任务的执行结束后间隔period时间再开始下一次执行;而scheduleAtFixedRate则是会尽量按照任务的初始时间来按照间隔period时间执行。
如果一次任务执行由于某些原因被延迟了,用schedule()调度的后续任务同样也会被延迟,而用scheduleAtFixedRate()则会快速的开始两次或者多次执行,是后续任务的执行时间能够赶上来。
ScheduledThreadPoolExecutor的主要方法:
// 在指定的延迟后执行
<V>ScheduledFuture<V> schedule(Callable<V> callable, long delay, TimeUnit unit)
// 在指定的延迟后执行
ScheduledFuture<?> schedule(mand, long delay, TimeUnit unit)
// 在指定的延迟后以固定速率执行(类似Timer.scheduleAtFixedRate())
ScheduledFuture<?> scheduleAtFixedRate(mand, long initialDelay, long period, TimeUnit unit)
// 在指定的延迟后以固定间隔执行(类似Timer.schedule())
ScheduledFuture<?> scheduleWithFixedDelay(mand, long initialDelay, long delay, TimeUnit unit)
比较:
·Timer对调度的支持是基于绝对时间的,因此任务对系统时间的改变是敏感的;而ScheduledThreadPoolExecutor支持相对时间。
·Timer使用单线程方式来执行所有的TimerTask,如果某个TimerTask很耗时则会影响到其他TimerTask的执行;而ScheduledThreadPoolExecutor则可以构造一个固定大小的线程池来执行任务。
·Timer不会捕获由TimerTask抛出的未检查异常,故当有异常抛出时,Timer会终止,导致未执行完的TimerTask不再执行,新的TimerTask也不能被调度;ScheduledThreadPoolExecutor对这个问题进行了妥善的处理,不会影响其他任务的执行。
Megalayer 商家在开始看到有提供香港服务器、香港站群服务器的时候有介绍过,后来就一直没有怎么关注。但是前几天有看到网友使用到他们家的美国独立服务器问其如何的,但是我没有使用过就不好评论,这不前几天也有介绍到Megalayer美国独立服务器。以及我们也有看到商家有提供美国站群服务器和美国大带宽服务器产品,可选30M不限制流量CN2优化线路,以及100M不限制流量国际带宽线路。新年元旦后,Me...
搬瓦工最近上线了一个新的荷兰机房,荷兰 EUNL_9 机房,这个 9 的编号感觉也挺随性的,之前的荷兰机房编号是 EUNL_3。这次荷兰新机房 EUNL_9 采用联通 AS9929 高端路线,三网都接入了 AS9929,对于联通用户来说是个好消息,又多了一个选择。对于其他用户可能还是 CN2 GIA 机房更合适一些。其实对于联通用户,这个荷兰机房也是比较远的,相比之下日本软银 JPOS_1 机房可...
Pia云这个商家的云服务器在前面也有介绍过几次,从价格上确实比较便宜。我们可以看到最低云服务器低至月付20元,服务器均采用KVM虚拟架构技术,数据中心包括美国洛杉矶、中国香港、俄罗斯和深圳地区,这次春节活动商家的活动力度比较大推出出全场6.66折,如果我们有需要可以体验。初次体验的记得月付方案,如果合适再续约。pia云春节活动优惠券:piayun-2022 Pia云服务商官方网站我们一起看看这次活...
scheduleatfixedrate为你推荐
水晶易表水晶报表是什么?主要有什么用处?应用雷达雷达在各方面的用途视频压缩算法MP4视频压缩,比特率如何计算。网络审计网络安全审计系统的背景js后退在全局js中屏蔽了后退功能,但是想让自己定义的后退有用什么是生态系统生态系统的功能有什么?微软操作系统下载怎么下载官方win10 64位镜像系统微软操作系统下载微软原版xp系统下载网址是哪个啊?有没有免费就可以下载的?微软操作系统下载微软的系统到哪下载谷歌图片识别如何打开PICASA头像识别功能?
中国域名注册 ip反查域名 directspace 国外php主机 美国php主机 天猫双十一秒杀 论坛空间 智能骨干网 jsp空间 isp服务商 论坛主机 lamp的音标 网页加速 免费网络空间 如何登陆阿里云邮箱 97rb 网络速度 侦探online 海尔t68驱动 电脑主机启动不了 更多