精华帖 (1) :: 良好帖 (5) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2012-02-22
最后修改:2012-02-22
本文属于作者原创,原文发表于InfoQ中文站。
地址为:http://www.infoq.com/cn/articles/ftf-java-volatile
声明:
附带LinkedTransferQueue源码,欢迎大家关注我的新浪微博 http://weibo.com/kirals
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2012-02-23
最后修改:2012-02-23
附件源码来自于Grizzly框架。
|
|
返回顶楼 | |
发表时间:2012-02-23
最后修改:2012-02-23
开源框架disruptor http://code.google.com/p/disruptor/ 也使用追加字节的方式来优化Volatile变量。
|
|
返回顶楼 | |
发表时间:2012-02-23
不错,不过这文章比我想象中要短的多
|
|
返回顶楼 | |
发表时间:2012-02-23
Ulysses 写道 不错,不过这文章比我想象中要短的多
呵呵 写了很久,输出也很多,但是为了文章的质量,最后削减了很大一部分。 |
|
返回顶楼 | |
发表时间:2012-02-23
为什么要使用Volatile
Volatile变量修饰符如果使用恰当的话,它比synchronized的使用和执行成本会更低,因为它不会引起线程上下文的切换和调度 ---------------能否也介绍一下synchronized的实现原理以及与Volatile的差异? |
|
返回顶楼 | |
发表时间:2012-02-23
evilgod 写道 为什么要使用Volatile
Volatile变量修饰符如果使用恰当的话,它比synchronized的使用和执行成本会更低,因为它不会引起线程上下文的切换和调度 ---------------能否也介绍一下synchronized的实现原理以及与Volatile的差异? 多谢你的关注,下一篇文章我会介绍。 |
|
返回顶楼 | |
发表时间:2012-02-24
不错的文章。
个人感觉volatile关注数据一致性(通过memory barrier),synchronized是互斥“机制”,概念上不一样,说volatile是轻量级的synchronized不合适。 |
|
返回顶楼 | |
发表时间:2012-02-24
对于cacheline pading一直有个疑问,1个64Byte的struct在内存中的布局可能是跨cacheline(64Byte)的,例如地址是[32,96]。这种情况应该是保证不了独占cacheline吧。
|
|
返回顶楼 | |
发表时间:2012-02-24
intel cpu 偶地址访问,如果64bit由于某种原因横跨64bit cacheline,需要读两次
ChristmasLin 写道 对于cacheline pading一直有个疑问,1个64Byte的struct在内存中的布局可能是跨cacheline(64Byte)的,例如地址是[32,96]。这种情况应该是保证不了独占cacheline吧。
|
|
返回顶楼 | |