java并发编程之volatile的使用

Volatile的应用

volatile是轻量级的synchronized,它在多处理器开发中保证了共享变量的“可见性”
(可见性指当一个线程修改一个共享变量时,另外一个线程可以读到修改值)。

volatile的定义和实现原理

如果一个字段被声明成volatile,Java线程内存模型所有线程看到这个变量的值是一致的。

有volatile变量修饰的共享变量进行写操作的时,Java代码转换成汇编指令在多核处理器下会发生两件事情:

将当前处理器缓存行的数据写回到系统内存(锁缓存不锁内存)  
这个写回内存的操作会使其他在cpu里缓存了该内存地址的数据无效,处理器通过嗅探重新讲内存数据读到缓存中。

注意:为了提高处理效率,处理器不直接操作内存,先将系统内存的数据读到缓存,再操作缓存。

volatile优化

JDK7新增LinkedTransferQueue,使用追加字节的方式来优化队列出队入队的性能。

猜你喜欢

转载自blog.csdn.net/weixin_44146509/article/details/109035391