Java并发编程(三)可见性

Java极客  |  做者  /  铿然一叶
这是Java极客的第 31 篇原创文章

1、可见性

多核主机上每一个CPU都有本身的缓存,在操做内存变量时须要先从内存加载到CPU缓存,操做完成后再从CPU缓存更新到内存,若是多个线程同时在不一样的CPU上操做,那么看到的数据就有可能不同。如图:java


T1两个线程都从内存读取到变量V。 T2线程A修改了变量V,但还未同步到内存中,此时线程B再次修改变量V,因为不是在线程A修改的结果上进行修改,就有可能致使错误,例如二者都对变量V+1。

2、解决可见性问题

若是要解决变量可见性问题:
1.变量经过volatile关键字修饰
2.操做方法同步编程

以上解决方法后面详细介绍。缓存

end.安全


相关阅读:
Java并发编程(一)知识地图
Java并发编程(二)原子性
Java并发编程(四)有序性
Java并发编程(五)建立线程方式概览
Java并发编程入门(六)synchronized用法
Java并发编程入门(七)轻松理解wait和notify以及使用场景
Java并发编程入门(八)线程生命周期
Java并发编程入门(九)死锁和死锁定位
Java并发编程入门(十)锁优化
Java并发编程入门(十一)限流场景和Spring限流器实现
Java并发编程入门(十二)生产者和消费者模式-代码模板
Java并发编程入门(十三)读写锁和缓存模板
Java并发编程入门(十四)CountDownLatch应用场景
Java并发编程入门(十五)CyclicBarrier应用场景
Java并发编程入门(十六)秒懂线程池差异
Java并发编程入门(十七)一图掌握线程经常使用类和接口
Java并发编程入门(十八)再论线程安全并发


Java极客站点: javageektour.com/post

相关文章
相关标签/搜索