第二章:簡單 Java 程式解析
第三章:變數與資料型態
第四章:運算子、運算式與敘述
第五章:選擇性敘述與迴圈
第十章:實例變數與函數、類別變數與函數
Powered By GitBook
實作 RUNNABLE 介面
若本身類別已經繼承了其他父類別,但又想繼承 Thread 類別,這時就會遇到 Java 無法多重繼承。 想到多重繼承就會想到 介面,在[JAVA]多重繼承中提到:透過 介面 就能達到多重繼承。
Java 提供了 Runnable 介面,有抽象函數 run() ;因此我們只需要定義 run() 即可。
改寫 啟動執行緒 中的範例:
讓我們先實作介面
1
class multi_Test implements Runnable
2
{
3
private String name;
4
public multi_Test(String str)
5
{
6
name=str;
7
}
8
public void run()
9
{
10
}
11
}
Copied!
且詳細定義 run函數
1
public void run()
2
{
3
for(int i=0;i<4;i++)
4
{
5
for(int j=0;j<100000000;j++);
6
System.out.println(id+" is running..");
7
}
8
}
Copied!
而在main() 中:我們建立物件後,再分別產生 Thread 類別的物件 來呼叫 start() 啟動執行緒
1
multi_Test apple=new multi_Test("apple");
2
multi_Test pen=new multi_Test("pen");
3
Thread m1=new Thread(apple);
4
Thread m2=new Thread(pen);
5
m1.start();
6
m2.start();
Copied!

完整程式碼

1
class multi_Test implements Runnable
2
{
3
private String name;
4
public multi_Test(String str)
5
{
6
name=str;
7
}
8
public void run()
9
{
10
for(int i=0;i<3;i++)
11
{
12
for(int j=0;j<100000000;j++);
13
System.out.println(id+" is running..");
14
}
15
}
16
}
17
18
public class multi_thread_3
19
{
20
public static void main(String args[])
21
{
22
multi_Test apple=new multi_Test("apple");
23
multi_Test pen=new multi_Test("pen");
24
Thread m1=new Thread(apple);
25
Thread m2=new Thread(pen);
26
m1.start();
27
m2.start();
28
}
29
}
30
Copied!

整理

Q:那麼該使用 Thread類別 還是 Runnable介面呢? A:其實都可以,了解該類別是否有繼承其他類別。因為類別只能繼承一個類別。
那如果使用多執行緒的類別已經繼承其他類別,就必須實作。 我們可以這麼寫:
1
class multi_Test extends m_test implements Runnable
2
{
3
...
4
}
Copied!
以上意思:multi_Test 類別繼承 m_test 類別 並實作 Runnable 介面 這麼一來multi_Test 可以使用多執行緒,又能繼承 m_test 類別。
Last modified 9mo ago
Copy link