每個 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後
===Timer1 start
===Timer1 end //線程休眠10s後