package thread;
/*
* 通過實現Runnable()接口運行新的線程,按照以下順序進行。
* (1)編寫實現Runnable接口的類
* (2)在這個類中實現run()方法。
* (3)生成這個類的實例。
* (4)把這個實例作為構造方法的參數生成Thread類的對象
* (5)調用此Thread類的對象的start()方法。
*/
public class CountDownTest implements Runnable {
private String name;
public CountDownTest(String name){
this.name=name;
}
public void run() {
// TODO Auto-generated method stub
for(int i=3;i>=0;i--){
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
}
System.out.println(name+":"+i);
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
CountDownTest cdt1=new CountDownTest("thread 1");
CountDownTest cdt2=new CountDownTest("thread 2");
Thread t1=new Thread(cdt1);
Thread t2=new Thread(cdt2);
t1.start();
t2.start();
}
}
結果如圖:
在實現Runnable接口的類中必須定義的方法只是run()方法。在run()方法中和繼承Thread時一樣,描述其在線程運行的處理。此程序的run方法幾乎和前面的程序一樣,只是因為sleep方法是Thread類的方法,所以使用了不同的方式。
運行實現Runnable接口的新線程,在生成實現Runnable接口的類的實例之後,還必須生成Thread類的對象。在生成Thread類的對象時,必須制定構造的參數為實現Runnable接口的類的實例。