3. 并发容器
2019-10-18 11:15:52 0 举报
AI智能生成
java并发容器
作者其他创作
大纲/内容
List
CopyOnWriteArrayList
特点
实现了List接口
内部持有一个ReentrantLock lock = new ReentrantLock();
底层是用volatile transient声明的数组 array
读写分离,写时复制出一个新的数组,完成插入、修改或者移除操作后将新数组赋值给array
参考
https://www.cnblogs.com/simple-focus/p/7439919.html
Set
Queue
ConcurrentLinkedQueue
参考
http://ifeve.com/%E5%B9%B6%E5%8F%91%E9%98%9F%E5%88%97-%E6%97%A0%E7%95%8C%E9%9D%9E%E9%98%BB%E5%A1%9E%E9%98%9F%E5%88%97concurrentlinkedqueue%E5%8E%9F%E7%90%86%E6%8E%A2%E7%A9%B6/
https://my.oschina.net/90888/blog/1624935
HashMap之原理及死锁
1.7
结构
数组+链表
initialCapacity:16
为什么是2的n次幂
size:实际键值对数量
loadFactory:负载因子,代表了table的填充度有多少,默认是0.75
threshold:阈值 =capacity*loadFactory
capacity:数组大小
resize
触发时机
大于等于阈值
流程
参考
https://www.cnblogs.com/xiaolovewei/p/7993521.html
https://www.cnblogs.com/liqipeng/p/7759627.html
1.8+
结构
数组+链表/红黑树
红黑树条件
在桶容量大于等于64且链表节点数大于等于8的时候转换为红黑树。当红黑树节点数量小于6时又会转换为链表
resize
由倒叙变为正序,避免了死循环的产生
参考
https://www.jianshu.com/p/4177dc15d658
https://blog.csdn.net/wangming520liwei/article/details/82791636
https://www.cnblogs.com/morethink/p/7762168.html
1.7+ 死循环
参考
https://www.cnblogs.com/tiancai/p/9056393.html
https://blog.csdn.net/lantian0802/article/details/42487803
https://www.jianshu.com/p/13c650a25ed3
https://coolshell.cn/articles/9606.html
https://juejin.im/post/5a224e1551882535c56cb940
场景
丢元素
ConcurrentHashMap
1.7
结构
Segment+数组+链表
参考
https://www.jianshu.com/p/cd6cca294c44
https://my.oschina.net/wenbo123/blog/1840330
https://www.jianshu.com/p/6821a2bd9a6d
并发控制
Segment继承了ReentrantLock
方法
put
get
size
1.8+
结构
Node(CAS)+链表/红黑树
参考
https://juejin.im/entry/59fc786d518825297f3fa968
https://blog.csdn.net/u010723709/article/details/48007881
http://www.jasongj.com/java/concurrenthashmap/
并发控制
方法
put
get
size=baseCount+counterCells.value
数据结构
红黑树
参考
https://www.jianshu.com/p/e136ec79235c
https://www.cnblogs.com/CarpenterLee/p/5503882.html
https://zhuanlan.zhihu.com/p/31805309
https://blog.csdn.net/v_july_v/article/details/6105630
二叉树
参考
https://juejin.im/post/5ab5a01d518825555c1d9a24
https://blog.csdn.net/System_out_print_Boy/article/details/94554967
子主题
优
劣
极端情况下 :9 7,6,5,4,3。
一边的数 几乎和链表一样了
参考
https://www.cnblogs.com/yueshutong/p/9696216.html
http://ifeve.com/why-is-there-not-concurrent-arraylist-in-java-util-concurrent-package/
0 条评论
下一页