Java并发容器和框架
来源:互联网 发布:大数据相关课程 编辑:程序博客网 时间:2024/05/22 04:26
(1)ConcurrentHashMap的实现原理与使用
ConcurrentHashMap是线程安全且高效的HashMap。在并发中使用HashMap可能导致死循环。在使用线程安全的HashTable效率也不高。
HashMap在并发中执行put操作的时候会引起死循环,是因为多线程会导致HashMap的Entry链表形成环形数据结构,一旦形成环形结构,Entry的next节点永远不为空,就会产生死循环获取Entry。
HashTable是使用synchronized关键字来保证线程安全,但再线程激烈的竞争中效率极其低下。因为当一个线程访问HashTable的同步方法,其它线程也访问HashTable的同步方法时,会进入阻塞轮询状态。
ConcurrentHashMap实现原理:锁分段技术。首先将数据分成一段一段地存储,然后给每一段数据配一把锁,当一个线程占用锁访问其中一个段数据的时候,其它段的数据也能被其他线程访问。这样就可以有效的提高并发的访问率。
ConcurrentHashMap的结构:由Segment数组结构和HashEntry数据结构组成。Segment是一个可重入锁(ReentrantLock),在ConcurrentHashMap里扮演重要的角色,HashEntry则用于存储键值对。
(2)Java中的阻塞队列
在java7中出现了7中阻塞队列。
阻塞队列(BlockingQueue):一个支持两个附加操作的队列。支持阻塞的插入方法和移除的方法。
ArrayBlockingQueue:一个由数组结构组成的有界阻塞队列。
LinkedBlockingQueue:一个由链表组成的有界阻塞队列。
PriorityBlockingQueue:一个支持优先级排序的无界阻塞队列。
DelayQueue:一个使用优先级队列实现的无界阻塞队列。
SynchronousQueue:一个不存储元素的阻塞队列。
LinkedTransferQueue:一个由链表结构组成的无界阻塞队列。
LinkedBlockingDeque:一个由链表结构组成的双向阻塞队列。
(1) Fork/Join框架
Java7提供的一个用于并行执行任务的框架,是一个把大任务分割成若干个小任务,最终汇总每一个小任务结果后得到大任务的框架。
- Java并发容器和框架
- Java并发容器和框架
- Java并发容器和框架(五)
- java 并发容器框架
- 并发容器和框架
- Java并发编程艺术 6 Java并发容器和框架
- Java并发编程(六)《并发容器和框架》
- JAVA并发-同步容器和并发容器
- java中的同步容器和并发容器
- Java同步容器和并发容器
- Java的同步容器和并发容器
- Java并发编程:同步容器、并发容器和阻塞队列
- 第六章 Java并发容器和框架(ConcurrentHashMap,ConcurrentLinkedQueue,BlockingQueue,Fork Join)
- java多线程(9)--同步类容器和并发类容器
- 【JDK】:Java容器框架——同步容器与并发容器
- Java并发:线程安全的容器:同步和并发
- java并发编程(11)--并发容器ConcurrentHashMap和CopyOnWriteArrayList
- Java并发编程中并发容器ConcurrentHashMap和CopyOnWriteArrayList
- 高可用Hadoop平台-Flume NG实战图解篇
- Android的Window和WindowManager
- 文件读取、获取随机数、转换中文时间的方法
- SMO算法
- 纵观jBPM:从jBPM3到jBPM5以及Activiti5
- Java并发容器和框架
- 前端小白系列(2)—— 适配与响应式
- 遍历系统中加载的驱动程序以及通过设备对象指针获取设备对象名称
- Python 技巧(一)
- 从汽车到 IT
- windows系统下安装openssl
- Maven创建web项目
- LeetCode Problem No'169 Majority Element
- 200万像素网络摄像机一天要多少容量