簡體   English   中英

Java JVM概要分析,線程狀態 - “監控”狀態意味着什么?

[英]Java JVM profiling, thread status - what does “Monitor” status mean?

在此輸入圖像描述

我使用visualVM連接一個多線程Java應用程序,線程有4個狀態,即運行,休眠,等待,監視。 這種監控狀態意味着什么? 等待和監視器有什么區別?

這些狀態與Thread.State枚舉中提到的相同。 “等待”意味着,正如文檔所說:

由於調用以下方法之一,線程處於等待狀態:

  • Object.wait沒有超時
  • Thread.join沒有超時
  • LockSupport.park

“Monitor”是BLOCKED狀態,其中線程正在等待獲取對象的鎖定(因為它試圖進入synchronized塊或方法,而另一個線程已經擁有相關的鎖)。

這不是“監視”狀態...它表示該線程處於Thread.State.BLOCKED狀態。 我看到還有另一個好的答案,我只想指出這個鏈接進行更深入的解釋

監視器意味着線程正在等待獲取對象的鎖定。 例如,當一個線程正在運行一個synchronized方法而另一個線程試圖在同一個對象上調用它時,它將無法在方法的第一次調用完成之后。 這是因為第一個線程在該對象上有一個監視器或鎖,所以第二個線程必須等到它被釋放。

來自Oracle線程教程

“同步是圍繞一個稱為內部鎖或監視器鎖的內部實體構建的。(API規范通常將此實體簡稱為”監視器“。)內部鎖在同步的兩個方面都發揮作用:強制執行對同步的獨占訪問。對象的狀態和建立事先發生的關系,這對於可見性至關重要。“

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM