Web | Coding | Blog | SOHO

[Java]實作 Runnable 介面

若本身類別已經繼承了其他父類別,但又想繼承 Thread 類別,這時就會遇到 Java 無法多重繼承。
想到多重繼承就會想到 介面,在[JAVA]多重繼承中提到:透過 介面 就能達到多重繼承。

Java 提供了 Runnable 介面,有抽象函數 run() ;因此我們只需要定義 run() 即可。

改寫[Java]啟動執行緒 中的範例:

讓我們先實作介面

class multi_Test implements Runnable
{
   private String name;
   public multi_Test(String str)
   {
      name=str;
   }
   public void run()
   {
   }
}

且詳細定義 run函數

public void run()
   {
      for(int i=0;i<4;i++)
      {
         for(int j=0;j<100000000;j++);
         System.out.println(id+" is running..");
      }
   }

而在main() 中:我們建立物件後,再分別產生 Thread 類別的物件 來呼叫 start() 啟動執行緒

multi_Test apple=new multi_Test("apple");
multi_Test pen=new multi_Test("pen");
Thread m1=new Thread(apple);
Thread m2=new Thread(pen);
m1.start();
m2.start();

以下完整程式碼參考:

class multi_Test implements Runnable
{
   private String name;
   public multi_Test(String str)
   {
      name=str;
   }
   public void run()
   {
      for(int i=0;i<3;i++)
      {
         for(int j=0;j<100000000;j++);
         System.out.println(id+" is running..");
      }
   }
}

public class multi_thread_3
{
   public static void main(String args[])
   {
      multi_Test apple=new multi_Test("apple");
      multi_Test pen=new multi_Test("pen");
      Thread m1=new Thread(apple);
      Thread m2=new Thread(pen);
      m1.start();
      m2.start();
   }
}



Q:那麼該使用 Thread類別 還是 Runnable介面呢?
A:其實都可以,了解該類別是否有繼承其他類別。因為類別只能繼承一個類別。

那如果使用多執行緒的類別已經繼承其他類別,就必須實作。
我們可以這麼寫:

class multi_Test extends m_test implements Runnable
{
  ...
}

以上意思:multi_Test 類別繼承 m_test 類別 並實作 Runnable 介面
這麼一來multi_Test 可以使用多執行緒,又能繼承 m_test 類別。



參考書籍:Java 7 教學手冊
Java 學習日誌 (點此閱讀所有 Java日誌)


如果您喜歡本站的文章,也歡迎將文章分享轉貼並註明出處;
另外還未按讚粉絲專頁的朋友,也可以動動手點擊追蹤最新的文章唷:

Comments

comments

如果您喜歡本站的文章,也歡迎將文章分享轉貼並註明出處;另外還未按讚粉絲專頁的朋友,也可以動動手點擊追蹤最新的文章唷:


© 2017 4xCode™ | Design:SC 站長

歡迎來到SC站長網站

 

本站文章不再更新,新文章將發表至

4 x ‘s Space 網站

 

謝謝您一直以來的支持,我們新網站見~

 

SC站長網站文章也會將慢慢轉移至新網站,

新網站連結 4-x.tw 點此前往,或點擊上方圖案)