現在、Tomcatスレッドダンプを解析しています。それは3つのスレッドが保持していると言う、我々は我々の理解で複数のスレッドがJavaの同じモニターでロックを保持できますか?
- locked <0x00007f847612c820> (a com.tc.object.RemoteObjectManagerImpl)
を理解していない。特に
...
"soldOutJmsConsumerContainer-1" prio=10 tid=0x00007f8409c14800 nid=0x231 in Object.wait() [0x00007f8403a9f000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
at java.lang.Object.wait(Object.java:485)
at com.tc.object.RemoteObjectManagerImpl.waitUntilRunning(RemoteObjectManagerImpl.java:150)
at com.tc.object.RemoteObjectManagerImpl.basicRetrieve(RemoteObjectManagerImpl.java:216)
- locked <0x00007f847612c820> (a com.tc.object.RemoteObjectManagerImpl)
...
"catalina-exec-33" daemon prio=10 tid=0x0000000041bc4000 nid=0x832 in Object.wait() [0x00007f8400f73000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
at java.lang.Object.wait(Object.java:485)
at com.tc.object.RemoteObjectManagerImpl.waitUntilRunning(RemoteObjectManagerImpl.java:150)
at com.tc.object.RemoteObjectManagerImpl.basicRetrieve(RemoteObjectManagerImpl.java:216)
- locked <0x00007f847612c820> (a com.tc.object.RemoteObjectManagerImpl)
...
"catalina-exec-109" daemon prio=10 tid=0x0000000041469800 nid=0x1e87 in Object.wait() [0x00007f83f84c1000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
at java.lang.Object.wait(Object.java:485)
at com.tc.object.RemoteObjectManagerImpl.waitUntilRunning(RemoteObjectManagerImpl.java:150)
at com.tc.object.RemoteObjectManagerImpl.basicRetrieve(RemoteObjectManagerImpl.java:216)
- locked <0x00007f847612c820> (a com.tc.object.RemoteObjectManagerImpl)
:Tomcatで同じ 時点で実行されているすべてのスレッドのシングルスレッドダンプは、次の行が含まれていますその時の同じモニターへのロック。私たちの理解では とJLSによるとこれはできません。
スレッドダンプの解釈は正しいですか?
+1しかし...あなたは説明できますかなぜこれは他のすべての回答と同じではないのですか?彼らが状態を待っている場合は、モニターをリリースして、それを再び取得しようとしています。これは結局、他のすべての回答とまったく同じではありませんか? – NoozNooz42
@ NoozNooz42:これらのスレッドに通知され、現在モニターの再取得を待っている可能性がありますが、それはおそらくそうはありません。これらのスレッドがまだ通知されておらず、代わりに通知されるのを待っている可能性が高いという点を強調したいと思います。 – axtavt
@axtavtスレッドが再獲得を待っている可能性はありません。彼らが状態を再獲得するのを待っていたならば、「待ち」ではなく「ブロックされています」 – Dev