Javaで同期ブロックの概念を頭の中で抱いています。私は十分に同期された方法を理解していると感じています。だから私は、同期化された方法に関して同期ブロックを理解するのに役立つ類推を考えました。私が提案しているこの同等性が正しいかどうか教えてください。また、私は今のところ非静的な同期ブロックに対してこれを言及してきました。ただし、静的同期ブロックのポイントも歓迎します。Javaでの同期ブロックの簡略化
public void method()
{
//code snipppet A
synchronized(objRef)
{
//code snipppet B
}
//code snipppet C
}
OBJREFのクラスで
public void method() {
//code snippet A
objRef.sync_method();
//code snippet C
}
に相当します。
public synchronized void sync_method() {
//code snippet B
}
このアナロジーは、同期ブロックは、同期の方法は同じように振る舞うのロジックに基づいています。つまり、あるスレッドがモニター上でロックを取得すると、他のスレッドがその実行を妨害することは許されません。スレッドは同期メソッド全体の実行を終了した後にのみ制御を放棄します。
が考える印刷することができます。明確にするために、 'synchronized void method(){blabla(); } 'は' void method(){synchronized(this){blabla();のショートカットです。 }} '。どちらも、オブジェクト 'this'に関連付けられたロックを取得し、次にblabla()でコードを実行し、次にロックを解放します。 –
明確にするために、メソッドではなくオブジェクトのみをロックします。同期メソッドを使用すると、メソッドではなくオブジェクトがロックされます。 –