简介
volatile关键字保证了在多线程环境下,被修饰的变量在别修改后会马上同步到主存,这样该线程对这个变量的修改就是对所有其他线程可见的,其他线程能够马上读到这个修改后值....,而且代码顺序上为Thread1->Thread2
1、不用 volatile
假如ready字段不使用volatile,那么Thread 1对ready做出的修改对于Thread2来说未必是可见的,是否可见是不确定的..., 线程 B 对其他在 A 中的可见变量也可见....,当然使用volatile的同时也会增加性能开销
注意
volatile并不能保证非源自性操作的多线程安全问题得到解决,volatile解决的是多线程间共享变量的可见性问题,而例如多线程的i++,++i...Thread decThread = new DecThread();
decThread.start();
// 使用run()来运行结果为0,原因是单线程执行不会有线程安全问题