java中volatile和synchronized

  1. JMM
    java Memory Model
    并发过程中如何处理可见性,原子性,有序性的问题
    并发过程中两个关键性的问题
    a 线程之间如何通信:wait() notify() notifall()
    a)共享内存 - 隐式通信
    b) 消息传递 - 显示通信

b 线程之间如何同步
在共享内存的并发模型中,同步是显示做的 :synchronized
在消息传递都并发模型中由于消息的发送必须在消息的接收之前,所以是隐士的。
2. 定位内存可见性
Volatitle synchronized
3.
1. 对于声明了volatile的变量进行写操作的时候,jmv会像处理器发送一条Lock前缀的指令,会把这个变量所在的缓存行的数据写回到系统内存中。
2. 在多处理器的情况下,保证各个处理器缓存一致性的特点,就会实现缓存一致性的协议。
synchronized :可重入锁,互斥型,可见性
volatile:可以做到原子性,可见性,不能做到复合操作的原子性

猜你喜欢

转载自blog.csdn.net/weixin_39361197/article/details/85234843