ホームページ > Java > &#&チュートリアル > Javaでスレッドセーフを実装する方法は何ですか

Javaでスレッドセーフを実装する方法は何ですか

王林
リリース: 2019-11-27 14:55:05
転載
5500 人が閲覧しました

Javaでスレッドセーフを実装する方法は何ですか

スレッド セーフを実現するには、通常、AtomicityVisibility という少なくとも 2 つの機能が必要です。

実装方法:

1) synchronize を使用します: これはアトミックで可視であるため、変更された同期操作を使用すると、可視性が伴います。 synchronized はペシミスティック ロックを使用してスレッド セーフを実現します;

2) 基本データ型の代わりにアトミック クラスを使用します。アトミック クラスはオプティミスティック ロックを使用してスレッド セーフとマルチスレッドを実現します。この環境では、AtomicInteger classincrementAndGet() メソッドを使用して実装できます。Volatile は可視性を確保するためにも使用されます。Unsafe を使用してネイティブ ローカルを呼び出します。メソッドCAS、CAS はバス ロックまたはキャッシュ ロックを使用してアトミック性を確保します。

推奨オンライン ビデオ チュートリアル: java ビデオ チュートリアル

3) volatile キーワード、volatile は必ずしもアトミック性を持っているわけではありません。たとえば、volatile で変更された変数または -- 操作 (num) を使用して、volatile で変更された変数をアトミックにする必要があります。その後、一般的に Set できます。 boolean 型変数に対して次のように指定します。

volatile boolean tag = true;
线程1 while(tag){};
线程2 while(tag){};
ログイン後にコピー

増加または減少する変数がある場合は、アトミック クラス (AtomicInteger) を使用できます。

4) ThreadLocal を使用して各スレッドを分離します;

5) リエントラント ロックなどの他のロックも使用できます (ReentrantLock )スレッド セーフ;

6) クリティカル セクション、ミューテックス、セマフォを使用してスレッド セーフを確保することもできます。

この記事は、Java 入門学習コラムで推奨されており、どなたでも一緒に学び、コミュニケーションをとることができます。

以上がJavaでスレッドセーフを実装する方法は何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:csdn.net
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート