volatile关键字和原子操作:atomic
volatile 意思是易变的,不稳定的。作用是告诉编译器,凡是被该关键字声明的变量都是易变。
对于易变的变量最好不要进行锁操作,容易造成死锁。被volatile修饰的变量,线程从主内存中读取后,进行操作,之后并不一定立刻刷性主内存中的变量。volatile只提供了内存的可见性,没有提供原子性。所以用来做高并发是不可靠的。
volatile适合用于一个线程修改,多个线程读取的时候。
原子操作:atomic
atomic不会阻塞线程,线程安全的加强版volatile。在java.util.concurrent.atomic包里,多了一批原子处理类,主要用于高并发环境下的程序处理。
基本类:AtomicInteger、AtomicLong、AtomicBoolean
引用类型:AtomicRefernce等