1. ホーム
  2. java

[解決済み] Java JVM プロファイリング、スレッドステータス - "Monitor "ステータスの意味とは?

2023-08-09 14:44:47

質問

マルチスレッドのJavaアプリケーションをvisualVMで接続していますが、スレッドにはrunning, sleeping, wait, monitorの4つのステータスがあります。このMonitorのステータスは何を意味するのでしょうか?また、waitとMonitorの違いは何ですか?

どのように解決するのですか?

これらの状態は Thread.State enum. "Wait" は、ドキュメントに書かれているとおりの意味です。

スレッドは以下のメソッドのいずれかを呼び出すことにより、待機状態になります。

  • タイムアウトなしのObject.wait
  • タイムアウトなしのThread.join
  • LockSupport.park

"Monitor"は BLOCKED の状態であり、スレッドはオブジェクトのロックを取得するために待機しています(これは、スレッドが synchronized ブロックやメソッドに入ろうとしているが、他のスレッドがすでに関連するロックを保持しているため)。