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

Java 線程常用方法完整解析

     編輯:Java 相關知識

Java 多線程開發中,Thread 類提供的核心方法是控制線程生命週期與行為的基礎。本文系統整理常用方法的作用、參數與注意事項。

線程啟動與執行

  • start():啟動線程,JVM 呼叫 run() 方法,線程進入就緒狀態
  • run():線程執行體,**不可直接呼叫**(直接呼叫變成普通方法調用,不會開啟新線程)

線程休眠與讓步

  • sleep(long millis) / sleep(long millis, int nanos):當前線程睡眠指定時間,**不釋放鎖**,時間到自動進入就緒狀態(非執行狀態)
  • yield():暫停當前線程,讓同優先級或更高優先級的線程獲得執行機會,**不保證一定讓步成功**,不釋放鎖

線程優先級

  • setPriority(int newPriority):設定優先級,範圍 1 (MIN_PRIORITY) ~ 10 (MAX_PRIORITY),預設 5 (NORM_PRIORITY)
  • getPriority():獲取當前優先級

優先級只是調度提示,不保證執行順序,跨平台表現可能不同。

線程等待與合併

  • join() / join(long millis) / join(long millis, int nanos):當前線程等待目標線程終止(或超時),常用於主線程等待子線程完成
  • 範例:線程 A 呼叫 B.join(),B 結束後 A 才繼續執行

線程狀態轉換圖解

NEW --start()--> RUNNABLE <-------> RUNNING
  ^                    |  sleep/yield/join
  |                    v
BLOCKED/WAITING --notify/timeout--> RUNNABLE

常見誤區提醒

  1. sleep() 不釋放同步鎖,wait() 才會釋放
  2. yield() 不會進入阻塞狀態,只是重新參與調度
  3. join() 底層實際是輪詢 isAlive() 配合 wait(0) 實現
  4. 優先級不要過度依賴,關鍵邏輯應用同步機制保證
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved