/*线程安全的两个方面:执行控制和内存可见。
* 执行控制的目的是控制代码执行(顺序)及是否可以并发执行。
* 内存可见控制的是线程执行结果在内存中对其它线程的可见性。
* 根据Java内存模型的实现,线程在具体执行时,会先拷贝主存数据到线程本地(CPU缓存)
* ,操作完成后再把结果从线程本地刷到主存。*/
//synchronized关键字解决的是执行控制的问题
/*则是锁定当前变量,只有当前线程可以访问该变量,其他线程被阻塞住*/
//特性:volatile仅能使用在变量级别,会造成线程的阻塞,保证变量的修改可见性和原子性
//volatile可见性,
/*jvm当前变量在寄存器(工作内存)中的值是不确定的,需要从主存中读取*/
//特性:volatile仅能使用在变量级别,不会造成线程的阻塞,仅能实现变量的修改可见性
https://www.cnblogs.com/kaleidoscope/p/9506018.html