
java并发编程
Mr_Ten
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
简单理解volatile变量的原理
volatile实现原理 Java语言规范第3版中对volatile的定义如下:java编程语言允许线程访问共享变量,为了确保共享变量能被准确的一致地更新,线程应该确保通过排他锁单独获得这个变量。vola tile并不是绝对的线程安全的,volatile只能保证该变量的可见性,也就是说该变S的值发生变化的时候,所有线程都能够立马发现这个变化。但在某些情况下比锁要方便。因为如果一个字段被声明成了v原创 2017-10-08 13:33:09 · 364 阅读 · 0 评论 -
简析CAS机制与实现原理
在学习CAS的过程中,我百思不得其解的一个问题就是在多cpu并发的环境下,CAS如何保证线程的安全性呢?关于这个问题下面的两篇博客写的比较不错,基本把其中的原理解释清楚了,这里我只作一个简单的阐述。 http://m.blog.youkuaiyun.com/wbb_1216/article/details/62882921 http://m.blog.sina.com.cn/s/blog_ee34原创 2017-10-13 10:37:24 · 5567 阅读 · 2 评论 -
浅谈Java里的三种锁:偏向锁、轻量级锁和重量级锁
在学习sychronized关键字及其实现细节的时候,发现java中的三种锁,偏向锁,轻量级锁,重量级锁其实也有很多值得探究的地方,引入偏向锁是为了在无多线程竞争的情况下尽量减少不必要的轻量级锁执行路径,因为轻量级锁的获取及释放依赖多次CAS原子指令,而偏向锁只需要在置换ThreadID的时候依赖一次CAS原子指令,代价就是一旦出现多线程竞争的情况就必须撤销偏向锁。 Java对象头的长度原创 2017-10-15 22:10:37 · 16788 阅读 · 4 评论