麻烦您给讲解一下Timer的用法和注意事项 谢谢。辛苦您了。主要是看到了您那个关于Timer进行非循环输出1-10的代码。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 此回复为自动发出,仅用于显示而已,并无任何其他特殊作用楼主【tteesstt】截止到2008-07-08 20:28:23的历史汇总数据(不包括此帖):发帖的总数量:91 发帖的总分数:5100 每贴平均分数:56 回帖的总数量:58 得分贴总数量:5 回帖的得分率:8% 结贴的总数量:90 结贴的总分数:4900 无满意结贴数:0 无满意结贴分:0 未结的帖子数:1 未结的总分数:200 结贴的百分比:98.90 % 结分的百分比:96.08 % 无满意结贴率:0.00 % 无满意结分率:0.00 % 值得尊敬 Timer就是个定时器,可以做成定时炸弹那种,也可以做成闹钟那样的 嗯,就是个定时器,从 JDK 1.3 引入的,可以指定什么时候开始执行,隔多长时间执行一次任务什么的。比如 CSDN 每天凌晨开始给所有的用户增加可用分什么的,这种就需要采用定时器来指定时间和间隔运行,因为我们不可能每天这个时候手工运行程序吧,每个 Timer 采用了单独的一个线程,在没有到达触发时间点的时候这个线程就在睡觉,一到触发点时就马上唤醒运行 schedule中指定的任务,运行完后继续休息等待下一次的唤醒。import java.util.TimerTask;import java.util.Calendar;import java.util.Timer;import java.util.Date;public class X535 { public static void main(String[] args) { Timer timer = new Timer(); // 每 2 秒钟运行一次 timer.schedule(new MyTask(), 0, 2L * 1000); // 再启动一个任务,每 3 秒钟运行一次 timer.schedule(new MyTask2(), 0, 3L * 1000); // 由于 timer 是独立的,并不会在那里阻塞掉而不执行下面的 System.out.println("hi"); }}class MyTask extends TimerTask{ private final static int START = 22; private final static int END = 23; public void run() { Calendar c = Calendar.getInstance(); int hour = c.get(Calendar.HOUR_OF_DAY); if((START <= hour) && (END > hour)) { // 我们在这里可以做一些定期执行的任务 // 这里只是简单地输出当前的时间 System.out.printf("1 %tF %<tT%n", new Date()); cancel(); // 取消这个任务 } }}class MyTask2 extends TimerTask{ private final static int START = 22; private final static int END = 23; public void run() { Calendar c = Calendar.getInstance(); int hour = c.get(Calendar.HOUR_OF_DAY); if((START <= hour) && (END > hour)) { // 我们在这里可以做一些定期执行的任务 // 这里只是简单地输出当前的时间 System.out.printf("2 %tF %<tT%n", new Date()); } }}在调用 timer.cancel() 时,所有的任务将全部取消,也意味着线程终止。调用 timertask.cancel() 时,当前的 TimerTask 取消,也就是说在 MyTask任务运行一次后,不会再运行了。如果把 cancel 放到 print 的上面,效果是一样的,呵呵。实际上,定时器库就只有 java.util.Timer 和 java.util.TimerTask 两个类,这两个类中的方法也不多,看看 API DOC 基本上就能学会了,呵呵。作为任务调度器来说,定时器还是显得比较弱的,如果只是一些简单的定时任务,使用 Timer 还是比较方便的。 输出 100 的那段程序是我第一次使用 Timer,呵呵,从来没有用过,想到了正好试验一下 :) 现在JDK1.5以后也可以用Executes生成一个类似于Timer一样定时执行的东西,是Timer的增强版。 java socket 传递对象 某类A中的静态变量是A没有实例化就存在的变量。静态方法是A没有实例化就可以调用的方法 急,swing中如何根据table列名长短的内容,自动调整列的宽度 Properties类读取xml文件 问一个SWT多线程的问题 请教大家一下,刚学编程,请问错在哪里? java中如何取得时间值24小时的时间值? 如果在一个程序中同时响应多个事件? 我想在调JTable的列宽时,产生一个事件,我该加什么侦听? 怎么使用jcreator来进行调试呢?答着必给分。 [在线等][紧急][简单]关于list的问题 类的返回类型问题????
楼主【tteesstt】截止到2008-07-08 20:28:23的历史汇总数据(不包括此帖):
发帖的总数量:91 发帖的总分数:5100 每贴平均分数:56
回帖的总数量:58 得分贴总数量:5 回帖的得分率:8%
结贴的总数量:90 结贴的总分数:4900
无满意结贴数:0 无满意结贴分:0
未结的帖子数:1 未结的总分数:200
结贴的百分比:98.90 % 结分的百分比:96.08 %
无满意结贴率:0.00 % 无满意结分率:0.00 %
值得尊敬
隔多长时间执行一次任务什么的。比如 CSDN 每天凌晨开始给所有的用户增加可用分什么的,这种就需要
采用定时器来指定时间和间隔运行,因为我们不可能每天这个时候手工
运行程序吧,每个 Timer 采用了单独的一个线程,在没有到达触发时
间点的时候这个线程就在睡觉,一到触发点时就马上唤醒运行 schedule
中指定的任务,运行完后继续休息等待下一次的唤醒。import java.util.TimerTask;
import java.util.Calendar;
import java.util.Timer;
import java.util.Date;public class X535 {
public static void main(String[] args) {
Timer timer = new Timer();
// 每 2 秒钟运行一次
timer.schedule(new MyTask(), 0, 2L * 1000); // 再启动一个任务,每 3 秒钟运行一次
timer.schedule(new MyTask2(), 0, 3L * 1000); // 由于 timer 是独立的,并不会在那里阻塞掉而不执行下面的
System.out.println("hi");
}
}class MyTask extends TimerTask{
private final static int START = 22;
private final static int END = 23;
public void run() {
Calendar c = Calendar.getInstance();
int hour = c.get(Calendar.HOUR_OF_DAY);
if((START <= hour) && (END > hour)) {
// 我们在这里可以做一些定期执行的任务
// 这里只是简单地输出当前的时间
System.out.printf("1 %tF %<tT%n", new Date());
cancel(); // 取消这个任务
}
}
}class MyTask2 extends TimerTask{
private final static int START = 22;
private final static int END = 23;
public void run() {
Calendar c = Calendar.getInstance();
int hour = c.get(Calendar.HOUR_OF_DAY);
if((START <= hour) && (END > hour)) {
// 我们在这里可以做一些定期执行的任务
// 这里只是简单地输出当前的时间
System.out.printf("2 %tF %<tT%n", new Date());
}
}
}在调用 timer.cancel() 时,所有的任务将全部取消,也意味着线程终止。调用 timertask.cancel() 时,当前的 TimerTask 取消,也就是说在 MyTask
任务运行一次后,不会再运行了。如果把 cancel 放到 print 的上面,效果是
一样的,呵呵。实际上,定时器库就只有 java.util.Timer 和 java.util.TimerTask 两个类,
这两个类中的方法也不多,看看 API DOC 基本上就能学会了,呵呵。作为任务调度器来说,定时器还是显得比较弱的,如果只是一些简单的定时任
务,使用 Timer 还是比较方便的。
现在JDK1.5以后也可以用Executes生成一个类似于Timer一样定时执行的东西,是Timer的增强版。