并发
文章平均质量分 76
heart`beat
来者是客
展开
-
java 高性能并发一之 volatile
volatile是java虚拟机提供的最轻量级的同步机制 一,它的作用主要有两个: 1.保证此变量对所有线程的可见性。 2.禁止指令重排序优化。 “可见性”是指当一条线程修改了这个变量的值,新值对于其它线程来说是可以立即得知的。 volatile的特殊规则保证了新值能立即同步到主内存,以及每次使用前立即从主内存刷新。而普通变量的值在线程间传递均需要通过主内存来完成。例如,线程A修改...原创 2018-10-29 15:38:21 · 427 阅读 · 0 评论 -
java 高性能并发二之 CAS
CAS:比较并交换(Compare-and-Swap) 1. CAS操作。 CAS虽然是看上去是两次操作,但其实际上是通过硬件来保证其只使用一条处理器指令就完成操作,所以CAS是一个原子操作。 CAS是一种乐观的并发策略,采用失败重试的方式。 CAS有3个操作数,(旧的)内存值V,预期值A,要修改的新值B。当且仅当预期值A和内存值V相同时,将内存值V修改为B,否则什么都不做。(可以将内存值...原创 2018-10-29 19:48:14 · 290 阅读 · 0 评论 -
本地线程副本变量工具类ThreadLocal
1.ThreadLocal是什么 ThreadLocal是一个本地线程副本变量工具类。主要用于将私有线程和该线程存放的副本对象做一个映射,各个线程之间的变量互不干扰,在高并发场景下,可以实现无状态的调用,特别适用于各个线程依赖不通的变量值完成操作的场景。 2.数据结构 1.每个thread线程内部都有一个map(threadLocalMap). 2.map里面存储...原创 2018-10-30 21:57:50 · 397 阅读 · 0 评论 -
四种线程安全的 hashmap
1.hashtable 采用synchronized方法上加锁,使用阻塞同步,效率低。 2.collections.synchronizedMap(map) 也是采用synchronized方法上加锁,使用阻塞同步,效率低。 3.CopyOnWriteMap (读写分离思想) (java本身并没有提供CopyOnWriteMap,但是我们可以自己实现一个,代码见下) 采用 写时复制 的...原创 2018-11-07 22:42:20 · 3876 阅读 · 0 评论