valatile:
保证变量的内存可见性
禁止指令重排序
内存可见性:当A线程改变某个变量的值时,其他线程读取时是最新的值
总线嗅探机制:基于主内存的处理器,当变量的地址值被改变时,重新从主内存读取内存地址到线程中,保证在线程中的变量可见性
问题:虽然valatile保证了线程变量的可见性,但在修改时依然是线程不安全的(读->写)。可以加锁或者使用原子类处理(AtomicInteger)
指令重排序:
步骤:
例如:B需要使用A的值,那么B一定排在A后面。基于内存可见性,让线程中的变量也会基于这一点运行