package com.utan.timer.test;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Timer;
public class TimerTest {
public void test(){
try {
Timer timer = new Timer();
String sToday;
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
sToday = sdf.format(new Date());
SimpleDateFormat fTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date dToday = fTime.parse(sToday + " 00:20:00");
Calendar cal=Calendar.getInstance();
cal.setTime(dToday);
//cal.add(Calendar.DATE,1);
Date doTime = cal.getTime();
System.out.println(fTime.format(doTime));
timer.schedule(new MyTask(), doTime, 24*60*60*1000L);
} catch (Exception e) {
e.printStackTrace();
}
}
public void test2(){
try {
Timer timer = new Timer();
String sToday;
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
sToday = sdf.format(new Date());
SimpleDateFormat fTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date dToday = fTime.parse(sToday+" 00:20:00");
Calendar cal=Calendar.getInstance();
cal.setTime(dToday);
cal.add(Calendar.DATE,1);
Date doTime = cal.getTime();
timer.scheduleAtFixedRate(new MyTask(), doTime, 24*60*60*1000L);
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
TimerTest tt = new TimerTest();
tt.test();
tt.test2();
}
}
package com.utan.timer.test;
import java.util.TimerTask;
public class MyTask extends TimerTask{
public void run() {
try {
String threadName = Thread.currentThread().getName();
System.out.println("[" + threadName + "] executed...");
} catch (Exception e) {
e.printStackTrace();
}
}
}
当使用Timer时,发现一运行就执行了,比方说设置的00:20,可现在时间是17:00,定时器却执行了定时任务一次。是因为定时器的时间总从00:00算起吗,当天这次虽然时间过了,还是要补充执行一次?
显然,很多时候,我们不需要其一重启后就执行,如果定时任务是一个比较耗时的操作,那么启动系统时,该定时任务立即执行,会严重的影响系统性能,早晨系统启动缓慢,启动后较长一段时间响应迟钝。特别碰到紧急问题,需要重启时,如此慢的操作对系统管理员来说实在是火上加油。
其实一设置00:20概念上应该是第二日来执行,当天时间已经过去了,就不需要再执行了,所以开始日期应该是第二天,而不是启动应用程序的这一天。
分享到:
相关推荐
PB实现同一个窗口多个TIMER事件功能,互不影响同时运行
某个函数需要在每个小时的 3 分钟时候被执行一次,我希望我 15:45 启动程序,过了18 分钟在 16:03 这个函数被执行一次,下一次过 60 分钟在 17:03 再次被执行,下一次 18:03,以此类推。 以下是我基于 Timer 做...
//下面讲一个打开窗体定时执行按钮的东西 private void Form1_Load(object sender, EventArgs e) { System.Timers.Timer pTimer = new System.Timers.Timer(5000);//每隔5秒执行一次,没用winfrom自带的 pTimer....
C#定时器(Timer)实现了随着时间的变化,代码自动运行,以改变界面顔色的方式表达定时器
使用方法和 vb 的Timer控件一样,只是增加了一个 AsynExecute 属性,当设置此属性 = true 的时候, Timer 是以异步的方式运行的, 比如,第 1 次timer事件代码未运行完,第2次就开始了,那么第1次事件代码将暂停,第 3 次.....
定时器,定时运行某段代码,VS2008版及以更高版本即可完美运行,C#
Shutdown Timer Classic 是一个小巧的 Windows 应用程序,它允许您设置一个计时器,该计时器将关闭,重新启动,休眠,睡眠或锁定您的计算机。它是完全免费和开源的,并且不使用互联网。随时为 GitHub 上的项目做贡献...
使用Python的timer来完成每天执行一次的定时任务,环境是windows,python3.4
使用方法和 vb 的Timer控件一样,只是增加了一个 AsynExecute 属性,当设置此属性 = true 的时候, Timer 是以异步的方式运行的, 比如,第 1 次timer事件代码未运行完,第2次就开始了,那么第1次事件代码将暂停,第 3 次.....
主要介绍了java Timer 定时每天凌晨1点执行任务的代码,代码简单易懂,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
一旦接收到消息,它们就进行处理并等待下一个消息到来。另外,辅助线程用来执行后台处理而且不使用消息循环。Windows 计时器和基于服务器的计时器在运行时都使用 Interval 属性。线程计时器的时间间隔在 Timer 构造...
这是一个简单的自动定时运行,通过它,可以做很多需要定时执行的事,比如定时每天自动采集,这样就无需站长天天到网站上点一下采集了。在定时执行函数中可以写任何你要定时执行的代码,需要什么应用自己发挥吧
c/c++用一个源文件,一个头文件实现的 优先队列定时器 源码,包含测试代码,可运行。 说明: 1、源码中包含三个文件qtimer.cpp、qtimer.h、test_main.cpp; 2、qtimer.cpp中会创建一个优先队列来管理定时任务,一个...
Timer schedule JAVA J2EE WEB 指定每一天某时某分执行某项任务的功能。 读取目录下配置文件的内容。 开发环境jdk1.5.0_22、MyEclipse6.5中文版。 定时任务管理器,定时执行,定时任务,run 绝对能用
• 为什么不使用java.util.Timer? • 如何build Quartz源码? 杂项问题 • Quartz可以运行多少任务? • 通过RMI使用Quartz存在一些问题。 关于Jobs的问题 • 如何能够控制Jobs的实例化。 • 如何避免一个任务在完成...
主要介绍了C#中的定时器Timer类及其垃圾回收机制,讲解了Timer相关的单线程异步工作,需要的朋友可以参考下
您可以在要执行时的时间运行回调,就像self-timer一样。 例如,如果今天是工作日(星期一至星期五),请运行一些功能, self-timer.js可以编写simple 。 var st = new SelfTimer ( new Date ( ) ) ;st . on ( ) . ...
在我们的测试过程中,我们注意到 Free Countdown Timer 非常快速且无错误地执行了一项任务。它在系统资源上的占用空间很小,因此计算机的整体性能不会受到影响。 总而言之,Free Countdown Timer 被证明是一种高效...
利用jdk中的timer和timertask来实现,每天定时执行的任务。
我们通常写的timer都是用main方法写的定时器,但同样我们...不过有个致命伤就是集群方面跟quartz不能比,此方法代码做参考不错,如果要用,那么这个方法在一台服务器上执行就行了,其他服务器注释掉web中的监听就行了。