0

リンク リスト N0 、 N1 、 N2 に 3 つのノードしかなく、次の同期ステートメントを使用して N2 のロックを取得したいとします。

synchronized(N1.next)

上記のステートメントは何をしますか? 最初に N1 をロックしてから N1.next をロックしますか、それとも N1.next を直接ロックしますか?

4

3 に答える 3

2

ミューテックスがどのように機能するかについて、奇妙な考えをお持ちのようです。たとえば、以前の質問も同様です。

synchronizedメソッドまたはブロックを実行するとsynchronized、1 つのミューテックスのみが取得されます。つまり、1 つの「もの」だけがロックされます。また、そのミューテックスを取得すると、他のスレッドが同じミューテックスを取得しようとした場合にのみ、他のスレッドに影響します。

「これをロックすると、それもロックされますか」ということはありません。これは、アプリケーションが一貫して特定のミューテックス/ロックを使用してそれを意味する場合にのみ発生します。

于 2013-09-14T04:59:49.240 に答える
0

指定されたオブジェクトであるため、N1.next は自然にロックされます。

于 2013-09-14T04:27:59.250 に答える