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

Java 多執行緒入門:繼承 Thread 類建立執行緒

     編輯:J2EE

建立執行緒的兩大方式之一:繼承 Thread

最直接的方式是建立 Thread 子類並重寫 run() 方法。本文詳細說明 Thread 核心方法與生命週期。

Thread 關鍵方法

範例:三個執行緒併發列印


public class ThreadDemo {
    public static void main(String[] args) {
        new MyThread("Thread-A").start();
        new MyThread("Thread-B").start();
        new MyThread("Thread-C").start();
    }
}

class MyThread extends Thread {
    private final String name;
    MyThread(String name) { this.name = name; }

    @Override
    public void run() {
        int iterations = (int)(Math.random() * 15);
        int sleepMs = (int)(Math.random() * 1000);
        System.out.println(name + " running for " + iterations + " iterations");
        System.out.println(name + " sleeping for " + sleepMs + "ms between loops");
        for (int i = 0; i < iterations; i++) {
            System.out.println(name + " " + i);
            try { Thread.sleep(sleepMs); }
            catch (InterruptedException e) { Thread.currentThread().interrupt(); break; }
        }
    }
}

輸出範例 (非確定性順序)

Thread-A running for 12 iterations
Thread-B running for 8 iterations
Thread-C running for 14 iterations
Thread-A sleeping for 305ms between loops
Thread-C sleeping for 836ms between loops
Thread-B sleeping for 195ms between loops
Thread-A 0
Thread-C 0
Thread-B 0
...
Thread-A 11
Thread-C 13
Thread-B 7
Thread-C 14

繼承 Thread 的限制與替代方案

  • Java 單繼承限制:若類已繼承其他類,無法繼承 Thread。
  • 替代:實作 Runnable 介面 (或 Java 8+ Lambda),將任務與執行緒控制分離,更靈活、可重用、適合線程池。

// Runnable 寫法
Runnable task = () -> { /* 邏輯 */ };
new Thread(task).start();
// 或線程池
ExecutorService pool = Executors.newFixedThreadPool(3);
pool.submit(task);
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
方法說明
run()執行緒主體邏輯,必須重寫;直接呼叫 run() 不會啟動新執行緒,只是普通方法呼叫。
start()啟動執行緒,JVM 分配資源並排程呼叫 run()。
stop()已棄用:強制終止,導致鎖釋放不一致,資料損壞風險。
suspend()已棄用:暫停執行緒,易造成死結。
resume()已棄用:恢復暫停執行緒。
sleep(ms)靜態方法,讓當前執行緒睡眠,不釋放鎖。
join()等待該執行緒終止。
interrupt()中斷阻塞狀態 (sleep/wait/join),拋出 InterruptedException。