同期静的メソッドのロック メカニズム
Java では、同期メソッドは、常に 1 つのスレッドだけが指定されたメソッドを実行できることを保証します。このメカニズムには、アクセスを同期するためのモニターの取得が含まれます。
静的メソッドの同期
静的メソッドの場合、特定のオブジェクト インスタンスに属さないため、すぐにはわかりません。同期がどのように処理されるか。 Java のドキュメントによると、「同じオブジェクト上の同期メソッドの 2 つの呼び出しをインターリーブすることはできません。」では、静的メソッドの場合はどうなるのでしょうか?
クラス オブジェクト モニターの取得
Java 言語仕様 (JLS) では、この動作が次のように明確にされています。 ) メソッドでは、メソッドのクラスの Class オブジェクトに関連付けられたモニターが使用されます。これは、同期された静的メソッドが実行されると、そのメソッドが定義されているクラスを表すクラス オブジェクトに関連付けられたモニターを取得することを意味します。
より簡単に言うと、静的メソッドの synchronized キーワードは基本的に、クラス自体。したがって、特定のクラスで同期された静的メソッドを実行できるスレッドは常に 1 つだけです。これにより、クラスレベルの操作の実行中に 2 つのスレッドがインターリーブできないことが保証されます。
以上が同期された静的メソッドは Java でどのように機能しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。