08.17 Runnable接口實現線程計數程序

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接口的類的實例。