java内存模型和volatile关键字
java memory model(简称jmm)并不存在,描述了一组规则或者规范,通过这种规范,定义了程序中变量的访问方式,java工作主要是在线程上工作的,每个线程都有一个工作内存,所有的变量都存放在主内存中,线程对变量的操作都必须是在工作内存中进行,不同线程之间无法访问对方工作内存中的变量,他们之间访问必须通过主内存。线程对内存中变量的操作有八种:
lock:针对主内存中的变量,lock代表锁定线程中的变量
unlock:针对主内存的变量,代表释放线程对变量的锁定,可以接受别的线程对变量的锁定
read:针对主内存中的变量,代表了读取变量到线程的工作内存中
load:针对工作内存中的变量,将从主内存中读取的变量赋值到工作内存中的变量
use:针对工作内存中的变量,执行引擎读取变量的值使用这个操作
assign:针对工作内存中的变量,将执行引擎中的值赋值到工作内存中的变量
store:针对工作内存中的变量,将变量值存储到主内存中
write:针对主内存中的变量,将工作内存中读取的到数据写入到主内存的变量中