- 博客(5)
- 资源 (2)
- 收藏
- 关注
原创 java并发机制底层原理
0.术语 内存屏障:是一组处理器指令,用于实现对内存操作的顺序限制。 缓存行:缓存中可以分配的最小存储单元。 原子操作:不可中断的一个或一系列操作。 缓存行填充:当处理器识别到从内存中读取操作数是可缓存的,处理器读取整个缓存航到适当的缓存(L1,L2,L3的或所有)。 缓存命中:如果进行高速缓存航填充操作的内存位置仍然是下次处理器访问的地址是,处理器从缓存中读取操作数,而不是从内存。
2016-05-31 18:00:23 3976
原创 线程通信
1.可见性 1.1.非原子的64位操作 没有声明为volatile的64位数值变量(double、long),JVM允许将64位的读或写划分为俩个32位操作。如果读写在不同的线程,可能会出现得到一个值的高32位和另一个值的低32位。当JVM的规范完成是,很多主流的处理器框架还不能有效地支持64为算数原子操作。 1.2.加锁 锁不仅仅是关于同步与互斥的,也是关于内存可见的。为了保证所有线
2016-05-31 14:16:31 377
原创 java线程概述
1.多线程概述 #1:Main函数本身就是一个线程,主线程。 #2:多线程可以继承Thread类,也可以继承Runnable接口。 #3:没有严格意义上的并发。对于单核CPU的物理机来说,同一时刻有且只有一条线程在执行,运行多条线程,只是CPU在切换执行权而已,切换速度取决于CPU主频。 #4:JVM自身有很多后台线程执行。 #5:Runnable是一个可执行任务的标志,Thread是线
2016-05-30 21:24:10 472
原创 sun.misc.Unsafe's APIs
Compare And Swap(CAS):CAS 操作包含三个操作数 —— 内存位置(V)、预期原值(A)和新值(B)。 如果内存位置的值与预期原值相匹配,那么处理器会自动将该位置值更新为新值。否则,处理器不做任何操作。 Java并发包(java.util.concurrent)中大量使用了CAS操作,涉及到并发的地方都调用了sun.misc.Unsafe类方法进行CAS操作。 U
2016-05-20 17:14:21 259
原创 源码解析ConcurrentHashMap
本文基于JDK1.7 ConcurrentHashMap包含(segmentMask+1)个Segment,而每个Segment包含若干个HashEntry,各Segment写操作互不影响,实现了分段锁,提供了比Hashtable更好的并发性。 1.构造函数 @SuppressWarnings("unchecked") public ConcurrentHas
2016-05-20 12:02:49 327
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人