Java
文章平均质量分 88
kris-liu
java开发
展开
-
Unsafe 源码分析
转载:http://www.cnblogs.com/mickole/articles/3757278.htmlsun.misc.Unsafe/** * This class should provide access to low-level operations and its * use should be limited to trusted code. Fields can be ac转载 2016-11-17 10:25:12 · 442 阅读 · 0 评论 -
ThreadLocal 源码分析
简介ThreadLocal线程局部变量,使得各线程能够保持各自独立的一份对象。通常被定义为类的静态类变量。ThreadLocal类本身定义了有get(), set(), remove()和initialValue()方法。前面三个方法是public的,initialValue()是protected的,主要用于我们在定义ThreadLocal对象的时候根据需要来重写。这样我们初始化这么一个对象在里面原创 2016-11-18 19:15:57 · 681 阅读 · 0 评论 -
Java内存模型(JMM)核心概念总结
Java的采用的是共享内存模型,线程之间共享程序的公共状态,线程之间通过写-读内存中的公共状态来隐式进行通信。Java线程之间的通信由Java内存模型(JMM)控制,JMM决定一个线程对共享变量的写入何时对另一个线程可见。从抽象的角度来看,JMM定义了线程和主内存之间的抽象关系:线程之间的共享变量存储在主内存中,每个线程都有一个私有的本地内存,本地内存中存储了该线程以读/写共享变量的副本。本地内存是JMM的一个抽象原创 2016-11-12 19:20:10 · 1021 阅读 · 0 评论 -
Java Cache Line 伪共享及解决方案
伪共享问题本质:多个变量被cpu加载在同一个缓存行中,当在多线程环境下,多个变量被不同的cpu执行,导致缓存行失效而引起的大量的缓存命中率降低。缓存一致性协议MESI协议中,每个CPU的Cache控制器不仅知道自己的读写操作,而且也监听其它CPU的读写操作。每个Cache line所处的状态根据本核和其它核的读写操作在4个状态间进行迁移。其他CPU的写会导致本CPU的Cache无效,下次访问时如果C原创 2016-11-15 17:42:55 · 2378 阅读 · 0 评论