java并发编程
一、 volatile 基本介绍 Java 语言提供了一种稍弱的同步机制,即 volatile 变量.用来确保将变量的更新操作通知到其他线程,保证了新值能立即同步到主内存,以及每次使用前立即从主内存刷新. 当把变量声明为volatile类型后,编译器与运行时都会注意到这个变量是共享的. volatile 变量对所有线程是立即可见的,对 volatile 变量所有的写操作都能立即反应到 其他线程之中,换句话说:volatile 变量在各个线程中是一致的。 但是volatile并不是线程安全的。 volatile关键字能保证可见性,可见性只能保证每次读取的是最新的值;但是voliate没法保证对变量的操作的原子性。 二、举例说明 /** * * @author Yuanyuan */ public class Counter { public volatile int inc = 0; //一个线程执行increase的时候能保证得到了最新的当前值,但还没有执行自增操作,该线程就有可能被阻塞,此时其他线程也得到了这个最新值,执行了自增操作,这样之前那个阻塞的线程执行时就出错了。 public void increase() { System.out.println(inc); inc++; } public static void main(String[] args) { final