文章目录
并发编程的三大特性
可见性(visibility)
volatile修饰基本类型
一个线程修改了一个变量的值,其他线程是否对修改后的变量值可见
当以下程序中不加volatile时,线程t1无法结束,因为主线程对变量running的修改对于t1线程是不可见的。因为线程读取的变量值是主存中变量值的拷贝,各个线程对变量值的修改都是修改各自内存中变量的拷贝值,修改结果对其他线程不可见。所以,volatile的作用就是:对于volatile修饰的内存中的变量,其他线程对于该变量的修改会立即将修改结果刷新到主存,且主存会将该变量同步到其他有该变量的线程中。其次,以下代码中如果加了 System.out.println(“hello”); 输出语句的话,也是可以保证可见性的,因为输出语句底层加了synchronized,该关键字可以保证可见性
package fan.Con