JAVA多线程
沉着的卷心菜
这个作者很懒,什么都没留下…
展开
-
AbstractQueuedSynchronizer部分源码解析
/** * 加锁 */ public final void acquire(int arg) { // 首先尝试获取,如果获取成功直接退出;如果获取失败,即竞争锁失败,则创建Node,并添加到同步队列尾部。 if (!tryAcquire(arg) && acquireQueued(add...原创 2019-04-22 15:46:10 · 86 阅读 · 0 评论 -
ConcurrentHashMap_jdk1.7
public ConcurrentHashMap() { // 默认Table容量为16,默认扩容因子为0.75,默认并发级别为16(即分段锁个数) this(DEFAULT_INITIAL_CAPACITY, DEFAULT_LOAD_FACTOR, DEFAULT_CONCURRENCY_LEVEL); } public ConcurrentHas...原创 2019-04-24 16:00:31 · 140 阅读 · 0 评论 -
ConcurrentHashMap_jdk1.8
与1.7相比的重大变化 1、取消了segment数组,直接用table保存数据,锁的粒度更小,减少并发冲突的概率。 2、存储数据时采用了链表+红黑树的形式,纯链表的形式时间复杂度为O(n),红黑树则为O(logn),性能提升很大。什么时候链表转红黑树?当key值相等的元素形成的链表中元素个数超过8个的时候。主要数据结构和关键变量 Node类存放实际的key和value值。 sizeCtl: 负数...原创 2019-04-24 16:04:17 · 126 阅读 · 0 评论