Java インスタンス同期メソッドは並列に実行でき、静的メソッドはメソッドをシリアル化することを理解しています。私の理解不足は、静的メソッドが Class オブジェクトをロックするため、他の Class オブジェクトで何が起こるかです。すべての静的クラス間でロックしていますか?
ありがとう。
Java インスタンス同期メソッドは並列に実行でき、静的メソッドはメソッドをシリアル化することを理解しています。私の理解不足は、静的メソッドが Class オブジェクトをロックするため、他の Class オブジェクトで何が起こるかです。すべての静的クラス間でロックしていますか?
ありがとう。
インスタンス/オブジェクトをロックする代わりに、クラス自体をロックします。
クラスをロックすると、すべてのクラスではなく、そのクラスのみがロックされます。
ドキュメントから
同期メソッドは、実行前にモニター (§17.1) を取得します。
クラス (静的) メソッドの場合、メソッドのクラスの Class オブジェクトに関連付けられたモニターが使用されます。
インスタンス メソッドの場合、これ (メソッドが呼び出されたオブジェクト) に関連付けられたモニターが使用されます。