因为main是个线程
new RemindTask()也是个线程理论上结果应该是随机的,但这个程序中
new Reminder(3);
System.out.println("Task scheduled.");
连在一起运行
所以第一个语句建立一个线程并等待运行(run())时
打印语句应该已经执行了timer.schedule(new RemindTask(), seconds*0);
确实是等0秒,但是在new RemindTask()启动之后立即运行
根据上面分析,new RemindTask()在打印后启动,
所以出现结果如下:
Task scheduled.
Time's up!可以这样写:
            new Reminder(3);
for(int i=0;i<10000;i++)
for(int j=0;j<10000;j++);
System.out.println("Task scheduled.");
在打印前等待一段时间,如果是等待0秒,就会出现以下结果:
Time's up!
Task scheduled.

解决方案 »

  1.   

    我把主程序改成:
     new Reminder(3);
    for(int i=0;i<10000;i++)
    for(int j=0;j<10000;j++);
    System.out.println("Task scheduled.");
    后显示的是:
    Time's up!
    Task scheduled.能不能讲解以下i和j都表示的是什么?
    我把第一句for(int i=0;i<10000;i++)去掉后显示的是:Task scheduled.
    Time's up!
    我把第二句for(int j=0;j<10000;j++)去掉后显示了好多Task scheduled不知道是怎么会事,我比较苯希望可以详细的讲解一下。 谢谢
      

  2.   

    for(int i=0;i<10000;i++)
      for(int j=0;j<10000;j++);
    是个典型的双重循环的例子,i和j只是一个普通的变量,建议你看看有关循环的说明
    这样写可能好些:
    for(int i=0;i<10000;i++){
      for(int j=0;j<10000;j++){
      }
    }由于这个循环共执行了10000*10000次空语句,所以起到了一个延时的作用
    你去掉第一行,循环只有10000次,对计算机来说执行时间很短的,所以没有作用
    你去掉第二行么,那是执行了10000次的
    System.out.println("Task scheduled.");所以打印了10000个Task scheduled.
      

  3.   

    谢谢 febchen()  的解答我会多看循环的说明的谢谢