實作Runnable接口
因為Java的單根繼承特性,需要Runnable來實作類多繼承的實作。
package com.myRunnable;
/**
* 建立一個實作Runnable接口的類
* @author admin
*/
public class MyRunnable implements Runnable{
@Override
public void run() {
System.out.println("運作中!");
}
}
package run;
import com.myRunnable.MyRunnable;
/**
* 運作代碼
* @author admin
*/
public class Run {
public static void main(String[] args) {
Runnable runnable = new MyRunnable();
Thread thread = new Thread(runnable);
thread.start();
System.out.println("運作結束!");
}
}
運作結果:
由運作代碼中可以看出,Runnable接口的實作類的使用方式。可以通過Thread(Runnable target)和Thread(Runnable target, String name)的構造函數可以傳遞Runnable接口,說明構造函數支援傳入一個Runnable接口的對象。
Thread.java 的構造函數
構造函數 | |
---|---|
Thread() | 配置設定新的Thread對象 |
Thread(Runnable target) | 配置設定新的Thread對象 |
Thread(Runnable target, String name) | 配置設定新的Thread對象 |
Thread(String name) | 配置設定新的Thread對象 |
Thread(ThreadGroup group, Runnable target) | 配置設定新的Thread對象 |
Thread(ThreadGroup group, Runnable target, String name) | 配置設定新的Thread對象,以便将 target 作為其運作對象,将指定的 name 作為其名稱,并作為 group 所引用的線程組的一員 |
Thread(ThreadGroup group, Runnable target, String name, long stackSize) | 配置設定新的Thread對象,以便将 target 作為其運作對象,将指定的 name 作為其名稱,并作為 group 所引用的線程組的一員,并具有指定的 堆棧大小 |
Thread(ThreadGroup group, String name) | 配置設定新的Thread對象 |
參數解析
-
Runnable target
實作了Runnable接口的類的執行個體。要注意的是Thread類也實作了Runnable接口,是以,從Thread類繼承的類的執行個體也可以作為target傳入這個構造方法。
-
String name
線程的名字。這個名字可以在建立Thread執行個體後通過Thread類的setName方法設定。如果不設定線程的名字,線程就使用預設的線程名:Thread-N,N是線程建立的順序,是一個不重複的正整數。
-
ThreadGroup group
目前建立的線程所屬的線程組。如果不指定線程組,所有的線程都被加到一個預設的線程組中。
-
long stackSize
線程棧的大小,這個值一般是CPU頁面的整數倍。如x86的頁面大小是4KB。在x86平台下,預設的線程棧大小是12KB。
發散
Thread.java類也實作了Runnable接口,由此可見構造函數Thread(Runnable target) 不光可以傳入 Runnable 接口的對象,還可以傳入一個 Thread 類的對象,這樣可以将一個Thread 對象中的 run() 方法交由其他的線程進行調用。