当前位置:首页 > 开发 > 编程语言 > JDK JVM > 正文

JDK timer

发表于: 2014-09-03   作者:antlove   来源:转载   浏览:
摘要: 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

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;
	
	
	@Override
	public 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 block
			e.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();
	}
}

 

JDK timer

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
示例代码如下: import java.util.*; import static java.util.concurrent.TimeUnit.SECONDS; /** *
说到任务调度,大家可能会想到Quartz框架,但是jdk自带的简单任务调度工具类,反而了解的人并不是很
说到任务调度,大家可能会想到Quartz框架,但是jdk自带的简单任务调度工具类,反而了解的人并不是很
上一篇博文《任务调度(一)——jdk自带的Timer》中,简单介绍了一下Timer,本文将分享一下如何动态修
5 timer
.NET中的三种Timer的区别和用法 //1.实现按用户定义的时间间隔引发事件的计时器。此计时器最宜用于
最近的一个项目有一些地方需要用到定时功能,在设计过程中,突然发现.net的Timer类居然还有很多我以
最近的一个项目有一些地方需要用到定时功能,在设计过程中,突然发现.net的Timer类居然还有很多我以
最近的一个项目有一些地方需要用到定时功能,在设计过程中,突然发现.net的Timer类居然还有很多我以
From Quirky The Problem Sometimes you want to send someone a gift to open at a specific time.
int i = 60; private void timer1_Tick(object sender, EventArgs e) //定时执行事件 { button1.Tex
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号