论坛首页 Java企业应用论坛

【并发编程】深入分析Volatile的实现原理

浏览 7534 次
精华帖 (1) :: 良好帖 (5) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2012-02-22   最后修改:2012-02-22

本文属于作者原创,原文发表于InfoQ中文站。

 

地址为:http://www.infoq.com/cn/articles/ftf-java-volatile 

 

 

声明:
  本文已经首发于InfoQ中文站,版权所有,原文为《深入分析Volatile的实现原理》,如需转载,请务必附带本声明,谢谢。
  InfoQ中文站是一个面向中高端技术人员的在线独立社区,为Java、.NET、Ruby、SOA、敏捷、架构等领域提供及时而有深度的资讯、高端技术大会如QCon 、线下技术交流活动QClub、免费迷你书下载如《架构师》等。 

 

附带LinkedTransferQueue源码,欢迎大家关注我的新浪微博 http://weibo.com/kirals

 

   发表时间:2012-02-23   最后修改:2012-02-23
附件源码来自于Grizzly框架。
0 请登录后投票
   发表时间:2012-02-23   最后修改:2012-02-23
开源框架disruptor http://code.google.com/p/disruptor/ 也使用追加字节的方式来优化Volatile变量。
0 请登录后投票
   发表时间:2012-02-23  
不错,不过这文章比我想象中要短的多
0 请登录后投票
   发表时间:2012-02-23  
Ulysses 写道
不错,不过这文章比我想象中要短的多

呵呵 写了很久,输出也很多,但是为了文章的质量,最后削减了很大一部分。
0 请登录后投票
   发表时间:2012-02-23  
为什么要使用Volatile
Volatile变量修饰符如果使用恰当的话,它比synchronized的使用和执行成本会更低,因为它不会引起线程上下文的切换和调度

---------------能否也介绍一下synchronized的实现原理以及与Volatile的差异?
0 请登录后投票
   发表时间:2012-02-23  
evilgod 写道
为什么要使用Volatile
Volatile变量修饰符如果使用恰当的话,它比synchronized的使用和执行成本会更低,因为它不会引起线程上下文的切换和调度

---------------能否也介绍一下synchronized的实现原理以及与Volatile的差异?

多谢你的关注,下一篇文章我会介绍。
0 请登录后投票
   发表时间:2012-02-24  
不错的文章。
个人感觉volatile关注数据一致性(通过memory barrier),synchronized是互斥“机制”,概念上不一样,说volatile是轻量级的synchronized不合适。
0 请登录后投票
   发表时间:2012-02-24  
对于cacheline pading一直有个疑问,1个64Byte的struct在内存中的布局可能是跨cacheline(64Byte)的,例如地址是[32,96]。这种情况应该是保证不了独占cacheline吧。
0 请登录后投票
   发表时间:2012-02-24  
intel cpu 偶地址访问,如果64bit由于某种原因横跨64bit cacheline,需要读两次
ChristmasLin 写道
对于cacheline pading一直有个疑问,1个64Byte的struct在内存中的布局可能是跨cacheline(64Byte)的,例如地址是[32,96]。这种情况应该是保证不了独占cacheline吧。

0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics