码迷,mamicode.com
首页 > 编程语言 > 详细

细说Java多线程之内存可见性

时间:2017-08-22 00:32:15      阅读:243      评论:0      收藏:0      [点我收藏+]

标签:es2017   final   存在   color   img   同步代码块   nbsp   java内存模型   image   

可见性:一个线程对共享变量值的修改,能够及时地被其他线程看到。

共享变量:如果一个变量在多个线程的工作内存中都存在副本,那么这个变量就是这几个线
程的共享变量。

Java内存模型

技术分享

 

技术分享

 

技术分享

 

线程对共享变量操作的规定:

技术分享

共享变量可见性实现的原理:
技术分享

可见性的必要条件:
技术分享

可见性的实现方式:(final也可以)
技术分享

线程执行互斥代码的过程:
技术分享

重排序的概念
技术分享

as-if-serial的概念:
技术分享

导致共享变量在线程间不可见的原因:
技术分享

可见性分析:
技术分享


当一个线程访问object的一个sysnchronized(this)同步代码块时,其他线程对object中所有其他synchronized(this)同步代码块的访问会被阻塞

volatile实现可见性:
技术分享

volatile不能实现原子性的分析:
技术分享

保证自增操作原子性的解决方案:
技术分享
ReentrantLock的用法:
技术分享


volatile适用场合:
技术分享

synchronized与volatile的比较
技术分享

 

 

 

细说Java多线程之内存可见性

标签:es2017   final   存在   color   img   同步代码块   nbsp   java内存模型   image   

原文地址:http://www.cnblogs.com/jiliunyongjin/p/7407241.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!