JDK timer

编程技术  /  houtizong 发布于 3年前   133

1.java.util.Timer.schedule(TimerTask task, long delay):多长时间(毫秒)后执行任务

2.java.util.Timer.schedule(TimerTask task, Date time):设定某个时间执行任务

3.java.util.Timer.schedule(TimerTask task, long delay,longperiod):delay时间后开始执行任务,并每隔period时间调用任务一次。

4.java.util.Timer.schedule(TimerTask task, Date firstTime, long period):第一次在指定firstTime时间点执行任务,之后每隔period时间调用任务一次。

5.java.util.Timer.scheduleAtFixedRate(TimerTask task, long delay, long period):delay时间后开始执行任务,并每隔period时间调用任务一次。

6.java.util.Timer.scheduleAtFixedRate(TimerTask task, Date firstTime, long period):第一次在指定firstTime时间点执行任务,之后每隔period时间调用任务一次。

7.java.util.Timer.cancel():终止该Timer

8.java.util.TimerTask.cancel():终止该TimerTask

 

schedule与scheduleAtFixedRate的主要区别是

1. 不管执行的任务耗时多久,schedule总会按照指定的时间间隔去执行

2. 对于scheduleAtFixedRate,如果前一次任务时间超过了period(时间间隔),下一次任务将提前执行以保证2次任务执行的执行频率达到指定period

 

timer.DefaultTimerTask

package timer;import java.util.Random;import java.util.TimerTask;public class DefaultTimerTask extends TimerTask{private long count = 1;private long prevInvokeTime = 0;@Overridepublic void run() {long currentInvokeTime = System.currentTimeMillis();if(prevInvokeTime>0){System.out.println("invoke this execution after ["+(currentInvokeTime-prevInvokeTime)+"]");}try {Thread.sleep(new Random().nextInt(2000));} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}System.out.println("execution count is ["+count+++"]");prevInvokeTime = currentInvokeTime;}}

 

timer.MyTimer.java

package timer;import java.util.Date;import java.util.Timer;import java.util.TimerTask;public class MyTimer {public static void executionOnce(){Timer timer = new Timer();TimerTask task = new DefaultTimerTask();timer.schedule(task, 1000);}public static void executionAtSpecifiedTime(){Timer timer = new Timer();TimerTask task = new DefaultTimerTask();timer.schedule(task, new Date());}public static void executionInterval(){Timer timer = new Timer();TimerTask task = new DefaultTimerTask();timer.schedule(task, 1000,1000);}public static void executionIntervalAtSpecifiedTime(){Timer timer = new Timer();TimerTask task = new DefaultTimerTask();timer.schedule(task, new Date(),1000);}public static void executionFixedInterval(){Timer timer = new Timer();TimerTask task = new DefaultTimerTask();timer.scheduleAtFixedRate(task, 1000, 1000);}public static void executionFixedIntervalSpecifiedTime(){Timer timer = new Timer();TimerTask task = new DefaultTimerTask();timer.scheduleAtFixedRate(task, new Date(), 1000);}public static void main(String[] args) {//executionOnce();//executionAtSpecifiedTime();//executionInterval();//executionIntervalAtSpecifiedTime();//executionFixedInterval();executionFixedIntervalSpecifiedTime();}}

 

请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!

留言需要登陆哦

技术博客集 - 网站简介:
前后端技术:
后端基于Hyperf2.1框架开发,前端使用Bootstrap可视化布局系统生成

网站主要作用:
1.编程技术分享及讨论交流,内置聊天系统;
2.测试交流框架问题,比如:Hyperf、Laravel、TP、beego;
3.本站数据是基于大数据采集等爬虫技术为基础助力分享知识,如有侵权请发邮件到站长邮箱,站长会尽快处理;
4.站长邮箱:[email protected];

      订阅博客周刊 去订阅

文章归档

文章标签

友情链接

Auther ·HouTiZong
侯体宗的博客
© 2020 zongscan.com
版权所有ICP证 : 粤ICP备20027696号
PHP交流群 也可以扫右边的二维码
侯体宗的博客