次のコードでは、同期コードは、スレッド
はいへ のアクセスを制限するかどうか。ブロックは、同じString
オブジェクト[実際には、このString
オブジェクトで同期化されたすべてのブロック]で同時に複数回呼び出すことはできません。代わりに、「MSG」の監視対象
synchronized(this)
、この場合には、同じオブジェクトによってすべてのブロックへの同時アクセスを防止するよう、私たちは「これを」使用している場合、それは、異なる方法
、メソッドのthis
であるオブジェクトは、synchronizedブロックに2回入ることができません。例えばため
[Javaのような擬似コードを使用]:
MyObject o = new MyObject();
Thread1:
o.display("s1");
Thread2:
o.display("s2");
:現在の方法は、ブロックしかしスレッド1とスレッド2 によって同時に呼び出すことを許可しません
s1 = s2;
Thread1:
MyObject o = new MyObject();
o.display(s1);
Thread2:
MyObject o = new MyObject();
o.display(s2);
を
これらの間のブロック動作は表示されません - お互いを邪魔することなく、モニタが各 "s1"と "s2"にキャッチされます。
http://stackoverflow.com/questions/574240/synchronized-block-vs-synchronized-methodを参照してください。 –
まあ...あるケースでは、渡されたオブジェクトのモニターを使用しています。もう一方では、インスタンスのモニターを使用しています。 –