首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java 多執行緒:繼承 Thread 類別建立執行緒完整教學

     編輯:Java 相關知識

Thread 類別八種建構子


public Thread()
public Thread(Runnable target)
public Thread(String name)
public Thread(Runnable target, String name)
public Thread(ThreadGroup group, Runnable target)
public Thread(ThreadGroup group, String name)
public Thread(ThreadGroup group, Runnable target, String name)
public Thread(ThreadGroup group, Runnable target, String name, long stackSize)
  • target:實作 Runnable 的任務物件(Thread 本身也實作 Runnable)。
  • name:執行緒名稱,預設 Thread-N。
  • group:執行緒群組,便於批量管理。
  • stackSize:堆疊大小(平台相關,通常為 4KB 倍數)。

繼承 Thread 步驟

  1. 建立子類別繼承 Thread。
  2. 覆寫 run() 放入執行邏輯。
  3. 實例化子類別,呼叫 start()(不是 run())。

基本範例


package mythread;

public class ThreadDemo extends Thread {
    @Override
    public void run() {
        System.out.println(getName());
    }

    public static void main(String[] args) {
        System.out.println(Thread.currentThread().getName()); // main
        new ThreadDemo().start(); // Thread-0
        new ThreadDemo().start(); // Thread-1
    }
}

自訂執行緒名稱


public class NamedThread extends Thread {
    private String who;

    public NamedThread(String who) { this.who = who; }
    public NamedThread(String who, String name) { super(name); this.who = who; }

    @Override public void run() { System.out.println(who + ":" + getName()); }

    public static void main(String[] args) {
        new NamedThread("T1", "MyThread-1").start();
        Thread t2 = new NamedThread("T2");
        t2.setName("MyThread-2"); t2.start();
        new NamedThread("T3").start(); // 預設 Thread-1
    }
}

輸出:


T1:MyThread-1
T2:MyThread-2
T3:Thread-1

重要限制

  • start() 不可呼叫兩次,否則拋 IllegalThreadStateException。
  • setName() 在 start() 後呼叫有競態風險,建議建構時指定。
  • 主執行緒名稱固定為 main,任何 Java 程式至少有一條主執行緒。

Thread vs Runnable 選擇建議

維度繼承 Thread實作 Runnable
繼承限制佔用單一繼承無限制
任務與執行緒耦合強耦合解耦,可投入執行緒池
共享任務實例困難容易
建議場景簡單測試、教學生產環境、配合 ExecutorService
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved