- 博客(6)
- 问答 (8)
- 收藏
- 关注
原创 锁实现原理
本文从happens-before关系出发,结合ReentranLock源码,如何用内存屏障、CAS操作、LOCK指令实现锁的功能。
2017-12-25 20:57:59 2241
原创 Volatile实现原理
读写volatile变量就像是访问一个同步块一样,是原子的且是可见的,总是能访问到最新的值。其底层使用了Lock前缀和内存屏障保证可见性。
2017-12-25 11:16:25 1226
原创 内存屏障保证缓存一致性
缓存一致性协议给缓存行(通常为64字节)定义了个状态:独占(exclusive)、共享(share)、修改(modified)、失效(invalid),用来描述该缓存行是否被多处理器共享、是否修改。所以缓存一致性协议也称MESI。
2017-12-24 15:32:59 1424
原创 从源代码到Runtime发生的重排序
源代码和Runtime时执行的代码很可能不一样,这是因为编译器、处理器常常会为了追求性能而改变执行顺序。然而重排序很危险,很有可能使得运行结果和预想的不一样,特别是当重排序共享变量时。从源代码到Runtime需要经过三步的重排序:编译器重排序->指令重排序->内存系统重排序编译器重排序。
2017-12-22 15:49:03 312
原创 Java内存模型—JMM
有时候编译器、处理器的优化会导致runtime与我们设想的不一样,为此Java对编译器和处理器做了一些限制,JAVA内存模型(JMM)将这些抽象出来,这样编写代码时就无需考虑那么多底层细节,并保证“只要遵循JMM的规则编写程序,其运行结果一定是正确的”。
2017-12-21 17:00:06 256
原创 锁原理:偏向锁、轻量锁、重量锁
java中每个对象都可作为锁,锁有四种级别,按照量级从轻到重分为:无锁、偏向锁、轻量级锁、重量级锁。每个对象一开始都是无锁的,随着线程间争夺锁,越激烈,锁的级别越高,并且锁只能升级不能降级。
2017-12-18 16:15:16 12275 3
空空如也
cocos开发,安卓调试出问题,cannot locate rand()
2017-09-06
引导操作系统的时候,打印信息出现乱码
2017-03-05
部署到服务器java.lang.NoClassDefFoundError
2017-02-23
tomca项目共享jar后,strust出错
2016-11-06
spring aop参数传递的问题
2016-07-13
spring aop参数传递的问题
2016-07-13
关于jax-rs的三个困惑
2016-06-13
怎么设置标签的显示区域
2016-02-16
TA创建的收藏夹 TA关注的收藏夹
TA关注的人