JDK timer
编程技术  /  houtizong 发布于 3年前   166
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];
文章归档
文章标签
友情链接