天天看點

Java多線程(3)—— 線程實作之實作Runnable接口

實作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("運作結束!");
	}
}
           

運作結果:

Java多線程(3)—— 線程實作之實作Runnable接口

由運作代碼中可以看出,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() 方法交由其他的線程進行調用。

繼續閱讀