Runnable介面只有一個方法run(),我們宣告自己的類別實作Runnable接 口並提供這個方法,將我們的執行緒程式碼寫入其中,就完成了這一部分的任務。
但是Runnable介面並沒有任何對線程的支持,我們還必須創建Thread類別 的實例,這一點透過Thread類別的建構子public Thread(Runnable target);來實現。以下是一個例子:
public class MyThread implements Runnable { int count= 1, number; public MyThread(int num) { numnumber = num; System.out.println("创建线程 " + number); } public void run() { while(true) { System.out.println ("线程 " + number + ":计数 " + count); if(++count== 6) return; } } public static void main(String args[]) { for(int i = 0; i 〈 5; i++) new Thread(new MyThread(i+1)).start(); } }
嚴格地說,創建Thread子類別的實例也是可行的,但是必須注意的是,該子類別必須沒有覆寫Thread 類別的run 方法,否則該執行緒執行的將是子類別的run 方法,而不是我們用以實作Runnable 介面的類別的run 方法,對此大家不妨試驗一下。
使用Java Runnable介面來實作多執行緒使得我們能夠在一個類別中包容所有的程式碼,有利於封裝,它的缺點在於,我們只能使用一套程式碼,若想建立多個執行緒並使各個線程執行不同的程式碼,則仍必須額外創建類,如果這樣的話,在大多數情況下也許還不如直接用多個類分別繼承Thread 來得緊湊。
以上是如何在Java中寫一個實作Runnable介面的類別?的詳細內容。更多資訊請關注PHP中文網其他相關文章!