Java でロック コード ブロックを同期する場合、このクラスはシングルトンである必要がありますか?
高洛峰
高洛峰 2017-06-28 09:22:12
0
2
904

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

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

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全員に返信(2)
Ty80

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

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

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

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

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

いいねを押す +0
扔个三星炸死你

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

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!