java - volatile はスレッド共有データのセキュリティの問題を解決できますか?
欧阳克
欧阳克 2017-06-23 09:14:04
0
2
990

たとえば、シングルトン モードを作成する場合は、sycrynized 同期メソッドを使用せず、揮発性変更を使用します。

プライベート シグルトン(){

}

プライベート静的揮発性 Sigleton s = null;

パブリック静的 Sigleton getInstance(){

リーリー

}

これでスレッドの安全性の問題は解決できるでしょうか?

スレッドの可視性を理解する方法

s==null の場合に 2 つのスレッドが同時に入ってくると、最終的に 2 つの新しい sigleton オブジェクトが作成されませんか?

欧阳克
欧阳克

温故而知新,可以为师矣。 博客:www.ouyangke.com

全員に返信(2)
女神的闺蜜爱上我

new のオーバーヘッドが非常に小さい場合は、このように書いてもまったく問題ありません。ただし、初期化のオーバーヘッドが高い場合は、依然として synchronized を使用する必要があります。典型的な 二重チェックされたロック は次のように記述されます:

リーリー
いいねを押す +0
代言

スレッドの可視性を理解する方法

まずメモリモデルを理解してください。

スレッドはメイン メモリ内の変数を直接変更しませんが、最初に独自の作業メモリを書き込み、次にそれをメイン メモリに同期します。同期されていない場合、他のスレッドは変更を認識しません (スレッドは引き続きその変更を参照します)。作業メモリの独自のキャッシュ)。

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート