
线程CAS
沿途风景21
这个作者很懒,什么都没留下…
展开
-
CAS(Compare-And-Swap)原子性
话不多说直接demopackage unsynch;import java.util.concurrent.atomic.AtomicInteger;/** * i++ 的原子性问题,i++就是线程不安全的 它实际上是进行读-改-写操作 * * CAS其实更像是乐观锁,先比较版本号一样在赋值,如果版本号不一样就不赋值 * synchronized 就是一个悲观锁 * * 原...原创 2018-04-11 13:55:47 · 357 阅读 · 0 评论 -
volatile关键字
Volatile关键字特性指令重排内存可见性伪共享 vilatile一次是读取一块区域(catchLine), 而不是一个变量, 一般是64vilatile标识过的变量出现过的地方,以该变量为分界,该变量之前的代码不能重排到之后去,反之亦然单线程情况下指令重拍下并不影响执行结果package unsynch;/** * volatile修饰的变量,主要就是为了解决多线程操作数...原创 2018-04-11 13:58:50 · 212 阅读 · 0 评论 -
jdk1.7之HashMap
HashMap是用于存储Key-Value键值对的集合, 每一个键值对也叫作一个Entry。所以HashMap底层是由数组加单向链表构成的, 默认的初始长度为16, 每次自动扩容或是手动初始化时候长度必须是2的幂; 为什么初始化长度为16 ? Return h & (length - 1);下面我们以“book” 作为key演示一下: book通过 hashCode,十进制结果为3029...原创 2018-04-11 14:14:22 · 167 阅读 · 0 评论