基礎回顧-線程的幾種狀態

線程作爲一個程序最基本的組成部分,在Java中存在好幾種狀態

  1. NEW: 一個剛創建出來的線程處於該狀態下,由於只有剛剛被創建的時候可能處於該狀態,所以該狀態只能被存在一次
  2. RUNNABLE: 複合狀態,包含READY和RUNNING
    • READY:該狀態的線程可以被JVM的線程調度器進行調度讓處於RUNNING狀態
    • RUNNING:表示處於該狀態的線程正在運行
      調用方法舉例:
    • Thread.yield()調用會將對應線程從RUNNING->READY
  3. BLOCKED: 一個線程發起一個阻塞I/O操作後,或者試圖去獲得一個由其他線程持有鎖時候,相對應的線程會處於該狀態,處於該狀態的線程不會佔用CPU資源
  4. WAITING:一個線程執行了某些方法調用之後就會處於這種無限等待的狀態
    • 調用方法使得線程變更WAITING方法:
      • Object.wait()
      • Thread.join()
      • LockSupport.park()
    • 將WAITING方法變成RUNNABLE:
      • Object.notify()
      • Object.notifyAll()
      • LockSupport.unpark(thread)
  5. TIMED_WAITING:和WAITING類似,有限時間的等待
  6. TERMINATED: 已經執行結束的線程處於該狀態。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章