http://blog.csdn.net/weidan1121/archive/2005/11/11/527307.aspx
import java.util.Timer;
import java.util.TimerTask;
import java.util.Date;
/**
* @author vincent
*/
public class TimerTest {
public static void main(String[] args) {
Timer t = new Timer();
//在5秒之后执行TimerTask的任务
t.schedule(new TimerTask(){
public void run()
{System.out.println("this is task you do1");}
},5*1000);
//在Date指定的特定时刻之后执行TimerTask的任务
Date d1 = new Date(System.currentTimeMillis()+1000);
t.schedule(new TimerTask(){
public void run()
{System.out.println("this is task you do2");}
},d1);
//在Date指定的特定时刻之后,每隔1秒执行TimerTask的任务一次
Date d2 = new Date(System.currentTimeMillis()+1000);
t.schedule(new TimerTask(){
public void run()
{System.out.println("this is task you do3");}
},d2,1*1000);
//在3秒之后,每隔1秒执行TimerTask的任务一次
t.schedule(new TimerTask(){
public void run()
{System.out.println("this is task you do4");}
},3*1000,1*1000);
//在3秒之后,绝对每隔2秒执行TimerTask的任务一次
t.scheduleAtFixedRate(new TimerTask(){
public void run()
{System.out.println("this is task you do6");}
},3*1000,2*1000);
}
schedule和scheduleAtFixedRate的区别在于,如果指定开始执行的时间在当前系统运行时间之前,scheduleAtFixedRate会把已经过去的时间也作为周期执行,而schedule不会把过去的时间算上。
比如
SimpleDateFormat fTime = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
Date d1 = fTime.parse("2005/12/30 14:10:00");
t.scheduleAtFixedRate(new TimerTask(){
public void run()
{
System.out.println("this is task you do6");
}
},d1,3*60*1000);
间隔时间是3分钟,指定开始时间是2005/12/30 14:10:00,如果我在14:17:00分执行这个程序,那么会立刻打印3次
this is task you do6 //14:10
this is task you do6 //14:13
this is task you do6 //14:16
并且注意,下一次执行是在14:19 而不是 14:20。就是说是从指定的开始时间开始计时,而不是从执行时间开始计时。
但是上面如果用schedule方法,间隔时间是3分钟,指定开始时间是2005/12/30 14:10:00,那么在14:17:00分执行这个程序,则立即执行程序一次。并且下一次的执行时间是 14:20,而不是从14:10开始算的周期(14:19)。
}
分享到:
相关推荐
利用java程序编写的一个显示这台计算机上的时间,并随之变化。
`TimerTest2016`可能是一个项目或程序,专注于测试和演示`Timer`的功能和用法。这个项目的名称暗示了它可能是在2016年创建的,用于测试`Timer`的各种特性和性能。 `Timer`类在多种编程语言中都有实现,如Java、C#、...
这个"Timertest.zip"文件包含了一个用QT编写的计时器应用,我们可以从这个项目中学习到关于QT计时器的实现细节。 在QT中,计时器功能主要通过QTimer类来实现。QTimer是一个信号/槽机制驱动的定时器,可以设置为单次...
一个世界时钟一个世界时钟一个世界时钟一个世界时钟一个世界时钟
多次登录认证失败,app锁定,直到一定时间之后才能够允许用户重新认证登录
5. **定时器控制**:在`timerTest_Tick`方法中,我们移除了`txtTest_KeyPress`事件处理器,这意味着在定时器触发后,键盘输入将不再被阻止。 ### 应用场景 这种方法适用于多种情境,如: - 在游戏开发中,可以在...
`TimerTest.aps`、`TimerTest.dsp`和`TimerTest.dsw`是项目文件,用于VC++ IDE中管理项目和构建过程。`StdAfx.cpp`和`StdAfx.h`包含了预编译头文件,用于提高编译效率。 在创建多个定时器时,我们需要: 1. **创建...
TimerTest是一个项目名称,可能用于演示或测试与时间相关的功能。 在使用Qt进行UDP通信时,开发人员首先需要创建一个QUdpSocket实例。通过调用bind()函数,可以将该socket绑定到一个特定的端口上,这样它就能监听该...
在这个“java定时任务小例子”中,我们可以看到两个关键文件:`TimerTest.java`和`DoTask.java`,它们分别代表了定时器的任务调度和实际执行任务的组件。 首先,我们来看`TimerTest.java`。这个文件很可能是整个...
通过阅读`TimerTest1.java`和`TimerTest2.java`的代码,你可以进一步了解如何在实际项目中使用`Timer`和`TimerTask`来实现特定的定时任务需求。这两个测试类可能包含了创建`Timer`实例、创建`TimerTask`实例以及调度...
public class TimerTest extends TimerTask { private String jobName; public TimerTest(String jobName) { this.jobName = jobName; } @Override public void run() { System.out.println("execute " + ...
本文将深入探讨如何在VC++中实现多个定时器,并通过一个已调试通过的实例——"TimerTest"项目,来阐述相关知识点。 首先,VC++中的定时器主要依赖Windows API提供的SetTimer函数,这是一个窗口消息处理机制。当你...
public class TimerTest { public static void main(String[] args) { Timer timer = new Timer(); timer.schedule(new MyTask(), 1000, 2000);//在 1 秒后执行此任务,每次间隔 2 秒 } } ``` 在上面的例子中,...
TimerTest test = new TimerTest(); Date date = new Date(); long timestamp = 5000; timer.schedule(test, date, timestamp); } public static void main(String[] args) { TestTimer mytest = new ...
在MFC(Microsoft Foundation Classes)框架中,实现定时器功能是一项常见的需求,这通常用于执行周期性的任务或者在特定时间间隔后...通过深入研究`TimerTest`项目,开发者可以更具体地了解这些机制是如何协同工作的。
`TimerTest`很可能是一个包含实际时钟逻辑的JAVA源代码文件,其中可能包含了上面提到的`java.time`和`java.util.Timer`的相关代码。`www.pudn.com.txt`可能是一个说明文档或者资源链接,提供了关于此项目的更多背景...
TIMERtest源码将深入到S3C44B0的定时器模块,解释如何配置和启动定时器,以及如何处理定时器中断。 5. **UARTtest**: UART(Universal Asynchronous Receiver/Transmitter,通用异步收发传输器)是微处理器与外部...
public class TimerTest extends TimerTask { private String jobName = ""; public TimerTest(String jobName) { super(); this.jobName = jobName; } @Override public void run() { System.out.println...