谢谢。辛苦您了。主要是看到了您那个关于Timer进行非循环输出1-10的代码。

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【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  %                  
    值得尊敬
      

  2.   

    Timer就是个定时器,可以做成定时炸弹那种,也可以做成闹钟那样的
      

  3.   

    嗯,就是个定时器,从 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 还是比较方便的。
      

  4.   

    输出 100 的那段程序是我第一次使用 Timer,呵呵,从来没有用过,想到了正好试验一下 :)
      

  5.   


    现在JDK1.5以后也可以用Executes生成一个类似于Timer一样定时执行的东西,是Timer的增强版。