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

Java 多線程程式設計核心概念與實作指南

     編輯:Java 程式設計入門

一、理解多線程本質

多線程是一種允許程式中多個指令流並發執行的機制,每個指令流稱為一個線程,彼此獨立運作。線程又被稱為「輕量級進程」,它與進程同樣擁有獨立的執行控制權,由作業系統負責調度。關鍵差異在於:線程沒有獨立的儲存空間,而是與所屬進程中的其他線程共享同一記憶體空間,這使得線程間通訊遠比進程間通訊簡單高效。

多線程的執行在邏輯上是「同時」進行的,無論是否在物理上真正同步。若系統只有一顆 CPU,真正的同步執行固然不可能,但 CPU 切換速度極快,使用者感知不到差異,因此開發者只需假設各線程同步執行即可。多線程與傳統單線程設計最大的區別在於:各線程控制流獨立,導致代碼執行順序不可預測,進而引發線程調度、同步等核心問題。

二、Java 實現多線程的兩大路徑

建立新線程的核心在於指定該線程要執行的代碼。Java 作為純物件導向語言,提供 java.lang.Thread 類別來支援多線程編程,其核心方法 run() 由 start() 呼叫,開發者只需覆寫 run() 即可注入自定義邏輯。

方法一:繼承 Thread 類別

直接繼承 Thread 並覆寫 run() 方法,代碼直觀易懂。但缺點明顯:若類別已繼承其他類別(如 Applet),受限於 Java 單一繼承機制,無法再繼承 Thread。

public class MyThread extends Thread {
    int count = 1, number;
    public MyThread(int num) {
        number = num;
        System.out.println("建立線程 " + number);
    }
    public void run() {
        while (true) {
            System.out.println("線程 " + number + ":計數 " + count);
            if (++count == 6) return;
        }
    }
    public static void main(String args[]) {
        for (int i = 0; i < 5; i++) new MyThread(i + 1).start();
    }
}

方法二:實作 Runnable 介面

為突破繼承限制,Java 提供 java.lang.Runnable 介面,僅定義單一 run() 方法。自定義類別實作此介面,再將實例傳給 Thread 建構子 Thread(Runnable target),即可達成相同效果且不佔用繼承名額。

public class MyThread implements Runnable {
    int count = 1, number;
    public MyThread(int num) {
        number = num;
        System.out.println("建立線程 " + number);
    }
    public void run() {
        while (true) {
            System.out.println("線程 " + number + ":計數 " + count);
            if (++count == 6) return;
        }
    }
    public static void main(String args[]) {
        for (int i = 0; i < 5; i++) new Thread(new MyThread(i + 1)).start();
    }
}

實務上推薦使用 Runnable 方式,彈性更高,也符合「組合優於繼承」的設計原則。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved