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对这个问题进行了妥善的处理,不会影响其他任务的执行。
RepriseHosting是成立于2012年的国外主机商,提供独立服务器租用和VPS主机等产品,数据中心在美国西雅图和拉斯维加斯机房。商家提供的独立服务器以较低的价格为主,目前针对西雅图机房部分独立服务器提供的优惠仍然有效,除了价格折扣外,还免费升级内存和带宽,商家支持使用支付宝或者PayPal、信用卡等付款方式。配置一 $27.97/月CPU:Intel Xeon L5640内存:16GB(原...
金山云618年中促销活动正在进行中!金山云针对企业级新用户优惠力度比普通个人用户优惠力度要大,所以我们也是推荐企业新用户身份购买金山云企业级云服务器,尽量购买3年配置的,而不是限时秒杀活动中1年的机型。企业级用户购买金山云服务器推荐企业专区:云服务器N3 2核4G云服务器,1-5M带宽,827.64元/3年,性价比高,性能稳定!点击进入:金山云618年中促销活动目前,金山云基础型E1云服务器2核4...
ftech怎么样?ftech是一家越南本土的主机商,成立于2011年,比较低调,国内知道的人比较少。FTECH.VN以极低的成本提供高质量服务的领先提供商之一。主营虚拟主机、VPS、独立服务器、域名等传统的IDC业务,数据中心分布在河内和胡志明市。其中,VPS提供1G的共享带宽,且不限流量,还可以安装Windows server2003/2008的系统。Ftech支持信用卡、Paypal等付款,但...
scheduleatfixedrate为你推荐
身份证正反面图片身份证正反面照片。本人手持身份证照片。 银行卡正反面照片。 本人电话号码就能办信用卡真的吗tde海信冰箱BCD-212TDe怎么调温度?iso20000认证什么是ISO20000-IT服务管理体系应用雷达雷达在各方面的用途视频压缩算法视频压缩方式企业资源管理系统企业资源计划(ERP) 急!!!视频技术视频制作有前途吗搜索引擎的概念什么叫搜索引擎?搜索引擎的类型有哪些?什么是生态系统什么是生态环境?微软操作系统下载怎么下载官方win10 64位镜像系统
cn域名 cn域名注册 香港主机租用 美国独立服务器 godaddy seovip 512m内存 申请个人网页 百兆独享 河南m值兑换 lol台服官网 美国网站服务器 免费测手机号 联通网站 512mb 韩国代理ip 德隆中文网 域名转入 阿里云邮箱个人版 广州服务器托管 更多