面试题——java内存模型篇JMM(并发)
多核并发
-
volatile关键词
- 总线:cpu 和主内存之间的一条线,用来传输数据的
- MESI 缓存一致性协议 ,会监听总线(cpu总线嗅探机制),当工作内存的共享变量的副本会写到主内存的时候,会监听到,触发其他的工作内存的变量副本失效,从主内存中重新读取变量值
- 在数据回写到主内存的时候,需要store 和write 两步操作,在store之前进行了lock 操作,当write 之后在unlock,保证了,其他线程在该变量失效之后能够获取到最新的数据。
-
volatile 不能保证原子性,下面代码的运行结果小于等于10000,volatile它是有很多原子操作实现的,并发情况下,有些操作会失效,导致操作丢失
- 并发编程的三大特效:可见性(volatile),有序性,原子性