検索

ホームページ  >  に質問  >  本文

Java でロック コード ブロックを同期する場合、このクラスはシングルトンである必要がありますか?

メソッドまたはコード ブロックをロックすると、最大 1 つのスレッドがこのコードを同時に実行できます。 2 つの同時スレッドが同じオブジェクト内のこのロックされた同期コード ブロックにアクセスする場合、一度に 1 つのスレッドのみを実行できます。別のスレッドは、このコード ブロックを実行する前に、現在のスレッドがこのコード ブロックの実行を完了するまで待つ必要があります。

問題は、2 つのスレッドがこのオブジェクトの異なるインスタンスにアクセスした場合、それらは依然としてブロックされるのかということです。

高洛峰高洛峰2733日前960

全員に返信(2)返信します

  • PHP中文网

    PHP中文网2017-06-28 09:24:12

    同期は以下の3通りの使い方ができます

    1. ロックするオブジェクトを指定します。同期された (インスタンス) {} に似ています。

    2. インスタンス メソッドに直接作用します。これは、現在のインスタンスをロックすることと同じです。同期メソッドを開始する前に、現在のインスタンスのロックを取得する必要があります。

    3. 静的メソッドに直接作用します。これは、同期メソッドに入る前に、現在のクラスをロックし、現在のクラスのロックを取得することと同じです。

    上記 1 と 2 の場合。スレッドは、同じオブジェクトまたは同じインスタンスの場合にのみブロックする必要があります。

    返事
    0
  • 扔个三星炸死你

    扔个三星炸死你2017-06-28 09:24:12

    ロックがオブジェクト インスタンスに追加されます。異なるオブジェクトに追加されたロックは相互に影響しません。 2 つの異なるオブジェクトにアクセスする 2 つのスレッドは相互にブロックしません。

    返事
    0
  • キャンセル返事