JUCプロフィール

java.util.concurrentパッケージ、一般的に、このパッケージで使用される並行プログラミングツールの増加(JUCと呼ばれる)
を含む同様のスレッドを定義するためのカスタム・サブシステム线程池异步 IOおよび轻量级任务框架、マルチスレッドコンテキストのデザインを提供
するCollection实现ように

volatile、synchronized 和 final 实现可见性。
synchronized 和在 lock、unlock 中操作保证原子性。
volatile 和 synchronized 两个关键字来保证线程之间操作的有序性

volatileキーワード

private volatile int account = 100;
synchronized也能保证可见性,但是效率低
volatileキーワードは、ドメイン変数へのロックフリーアクセス、より軽量な同期化戦略のためのメカニズムを提供します。

  1. 揮発性の変数があります可见性揮発性変数としない、すなわち、直接メモリを変更し、代わりに、レジスタの値を使用して、スレッド内部キャッシュの順序を変更することができ
  2. 揮発性アトミック操作を提供していない、変数の最終的な種類を変更するために使用することができません
  3. 「排他的」を持っていない揮発性

注:揮発性の修正のみ、彼は満足してみましょう具有可见性、しかし、不能保证它具有原子性
そのようにvolatile int a = 0;した後、操作ありa++;、この変数は、可視性を持っていますが、a++まだ非アトミック操作である、
つまり、この操作はまた、スレッドの安全性の問題が存在します。

I ++

java.util.concurrent.atomicパッケージの下では、それは一般的なアトミック変数を提供します

private AtomicInteger serialNumber = new AtomicInteger();
// 自增运算
serialNumber.getAndIncrement();

おすすめ

転載: www.cnblogs.com/loveer/p/11409425.html