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

Java 多線程基礎入門:線程創建、命名、調度與優先級詳解

     編輯:Java 綜合教學

Java 多線程基礎入門:線程創建、命名、調度與優先級詳解

多線程是 Java 並發編程的基石。本文從進程/線程概念切入,詳細講解繼承 Thread 與實現 Runnable 兩種創建方式、線程命名技巧、搶佔式調度模型及優先級設置,並附帶完整可運行代碼示例。

一、 核心概念辨析

  • 進程:運行中的程序,獨立內存空間,系統資源分配單位
  • 線程:進程內的單一順序控制流,共享進程內存,CPU 調度基本單位
  • Java 進程啟動:java 命令啟動 JVM 進程 → 自動啟動「主線程」調用 main() → 同時存在 GC 線程等守護線程

二、 線程創建兩大方式

方式 1:繼承 Thread 類

public class MyThread extends Thread {
    @Override
    public void run() {
        for (int i = 0; i < 300; i++) System.out.println(i);
    }
}
public class Demo {
    public static void main(String[] args) {
        new MyThread().start();
        new MyThread().start();
    }
}

方式 2:實現 Runnable 接口(推薦)

public class MyRunnable implements Runnable {
    @Override
    public void run() {
        for (int i = 0; i < 100; i++)
            System.out.println(Thread.currentThread().getName() + ":" + i);
    }
}
public class Demo {
    public static void main(String[] args) {
        MyRunnable r = new MyRunnable();
        new Thread(r, "zhangsan").start();
        new Thread(r, "lisi").start();
    }
}

優勢:避免單繼承限制;同一 Runnable 實例可被多線程共享,實現「代碼與數據分離」,更符合 OO 設計。

三、 線程命名與獲取

方法說明
setName(String) / getName()實例方法,設置/獲取線程名
Thread(String name)構造方法直接命名
Thread.currentThread()靜態方法,獲取當前執行代碼所在的線程對象

四、 線程調度模型

  • 分時調度:輪流分配 CPU 時間片,平均主義
  • 搶佔式調度(Java 採用):優先級高者獲得更多 CPU 時間片;同優先級隨機選擇

五、 優先級控制

  • 範圍:1(MIN)~ 10(MAX),默認 5(NORM)
  • 方法:setPriority(int) / getPriority()
  • 注意:優先級僅影響獲取 CPU 的概率,不保證執行順序;需大量運行才能觀察到統計規律
Thread t1 = new Thread(() -> { /*...*/ }, "High");
Thread t2 = new Thread(() -> { /*...*/ }, "Low");
t1.setPriority(Thread.MAX_PRIORITY); // 10
t2.setPriority(Thread.MIN_PRIORITY); // 1
t1.start(); t2.start();
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved