Timer && TimerTask 的使用--用timer.schedule()

     每個  Timer timer=new Timer();      每new 一個 timer開啓一個線程,一個線程依次執行。 若想Timer1和Timer2 同時執行,分別用不同的Timer 開啓。

public class TimerMain {
public static void main(String[] args) {
System.out.println("start==");
/*Timer timer=new Timer();
Timer timer2=new Timer();
timer.schedule(new Timer1(), 1000);
timer2.schedule(new Timer2(), 1000);*/
List list = new ArrayList();
list.add(new Timer1());
list.add(new Timer2());
for (int i = 0; i < list.size(); i++) {
Timer timer3=new Timer();

timer3.schedule((TimerTask) list.get(i), 0, 1000);  //0表示 調用TimereTask之後,延遲0秒開始執行run方法

}

}

}

public class Timer1 extends TimerTask{
@Override
public void run() {
// TODO Auto-generated method stub
System.out.println("===Timer1 start");
try {
//wait(5000);
Thread.sleep(10000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("===Timer1 end");
}

}

public class Timer2 extends TimerTask{
@Override
public void run() {
// TODO Auto-generated method stub
System.out.println("===Timer2");
Thread t1=new Thread(new Timer1());
t1.start();
}
}


運行結果是:

start==
===Timer1 start
===Timer2
===Timer1 start
===Timer1 end   //線程休眠10s後

===Timer1 end


public class TimerMain2 {
public static void main(String[] args) {
System.out.println("start==");
Timer timer=new Timer();
timer.schedule(new Timer1(), 1000);
timer.schedule(new Timer2(), 1000);
/*List list = new ArrayList();
list.add(new Timer1());
list.add(new Timer2());
for (int i = 0; i < list.size(); i++) {
Timer timer3=new Timer();
timer3.schedule((TimerTask) list.get(i), 1000);
}*/

}

}

TimerMain2 的運行結果:

start==

===Timer1 start

===Timer1 end //10s後

===Timer2   //timer 開始
===Timer1 start

===Timer1 end //線程休眠10s後



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章