茫茫網海中的冷日 - 對這文章發表回應
茫茫網海中的冷日
         
茫茫網海中的冷日
發生過的事,不可能遺忘,只是想不起來而已!
 恭喜您是本站第 1675450 位訪客!  登入  | 註冊
主選單

Google 自訂搜尋

Goole 廣告

隨機相片
IMG_DPP_0058.jpg

授權條款

使用者登入
使用者名稱:

密碼:


忘了密碼?

現在就註冊!

對這文章發表回應

發表限制: 非會員 可以發表

發表者: 冷日 發表時間: 2021/9/27 2:56:04

D25:[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 類別。


如果您喜歡我的文章,可以至 4xDevJava 學習系列閱讀更多 Java 文章。



原文出處: D25:[Java]實作 Runnable 介面 - iT 邦幫忙::一起幫忙解決難題,拯救 IT 人的一天
內容圖示
url email imgsrc image code quote
樣本
bold italic underline linethrough   












 [詳情...]
validation picture

注意事項:
預覽不需輸入認證碼,僅真正發送文章時才會檢查驗證碼。
認證碼有效期10分鐘,若輸入資料超過10分鐘,請您備份內容後,重新整理本頁並貼回您的內容,再輸入驗證碼送出。

選項

Powered by XOOPS 2.0 © 2001-2008 The XOOPS Project|