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

Java 多線程編程入門:Thread、Runnable、線程組與優先級完整指南

     編輯:J2EE

兩種創建線程的方式

1. 繼承 Thread 類

class PrintThread extends Thread {
    private int count = 0;
    public void run() {
        for (;;) {
            System.out.println(++count + ": Thread");
        }
    }
}
// 使用
new PrintThread().start();

2. 實現 Runnable 介面

class PrintTask implements Runnable {
    public void run() {
        for (;;) System.out.println("T");
    }
}
// 使用
new Thread(new PrintTask()).start();

對比:Runnable 解耦任務與線程控制,支援線程池,為現代推薦方式。

線程組:批量管理利器

ThreadGroup group = new ThreadGroup("MyGroup");
new Thread(group, new Task(), "T1").start();
new Thread(group, new Task(), "T2").start();

// 遞歸查找頂級組
ThreadGroup parent = Thread.currentThread().getThreadGroup();
while (parent.getParent() != null) parent = parent.getParent();
parent.list(); // 打印完整線程樹

線程創建後終身屬於該組,不可變更。

線程優先級與調度

  • 範圍:1 (MIN_PRIORITY) ~ 10 (MAX_PRIORITY),預設 5 (NORM_PRIORITY)
  • 子線程繼承父線程優先級
  • JVM 採用固定優先級搶佔式調度,同優先級輪轉或運行至阻塞
  • 警示:優先級僅為提示,底層 OS 可能不支援 10 級,不可依賴其控制業務邏輯

線程生命週期與管理方法

狀態說明
NEW創建未啟動
RUNNABLE就緒/運行中
BLOCKED等待鎖/IO
WAITING無限期等待
TIMED_WAITING定時等待
TERMINATED已結束

常用方法:sleep()、yield()、join()、interrupt()。已棄用:stop()、suspend()、resume()(不安全)。

程序結束規則

JVM 在所有非守護線程結束前不會退出。守護線程(GC 等)不阻止 JVM 關閉。

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