Jdk源码
少主无翼
热衷并发编程,个人博客:http://vickyqi.com/
展开
-
JDK并发工具类源码学习系列——ConcurrentSkipListMap
ConcurrentSkipListMap在JDK并发工具类使用范围不是很广,它是针对某一特殊需求而设计的——支持排序,同时支持搜索目标返回最接近匹配项的导航方法。一般情况下开发者很少会使用到该类,但是如果你有如上的特殊需求,那么ConcurrentSkipListMap将是一个很好地解决方案。 本文通过对JDK的ConcurrentSkipListMap的代码详细分析,深入分析其实现原理。原创 2015-11-13 12:19:22 · 4777 阅读 · 0 评论 -
JDK并发工具类源码学习系列——ConcurrentSkipListMap(续)
ConcurrentSkipListMap在JDK并发工具类使用范围不是很广,它是针对某一特殊需求而设计的——支持排序,同时支持搜索目标返回最接近匹配项的导航方法。一般情况下开发者很少会使用到该类,但是如果你有如上的特殊需求,那么ConcurrentSkipListMap将是一个很好地解决方案。 本篇通过对JDK ConcurrentSkipListMap的代码实现进行详细分析,解读其实现原理。原创 2015-11-13 12:17:11 · 1261 阅读 · 0 评论 -
JDK并发工具类源码学习系列——ConcurrentHashMap
欢迎阅读原文:JDK并发工具类源码学习系列——ConcurrentHashMap 作为JDK并发工具类源码学习系列的第一个被分析的类,ConcurrentHashMap类在我的开发过程中经常被使用。个人觉得如果在共享一个Map时,如果无法判断是否需要加锁,那么就干脆直接使用ConcurrentHashMap,即能保证并发安全,同时性能也不会有太多下降,因为ConcurrentHashMap可实现无原创 2015-10-26 17:46:58 · 2178 阅读 · 0 评论 -
JDK并发工具类源码学习系列——ConcurrentLinkedQueue
ConcurrentLinkedQueue是一个基于链接节点的无界线程安全队列,它采用先进先出的规则对节点进行排序,当我们添加一个元素的时候,它会添加到队列的尾部,当我们获取一个元素时,它会返回队列头部的元素。它采用了“wait-free”算法来实现,该算法在Michael & Scott算法上进行了一些修改, Michael & Scott算法的详细信息可以参见[参考资料一]原创 2015-10-30 09:51:28 · 1858 阅读 · 0 评论 -
JDK并发工具类源码学习系列——CopyOnWriteArrayList
CopyOnWriteArrayList是ArrayList的一个线程安全的变体,其中所有可变操作(add、set 等等)都是通过对底层数组进行一次新的复制来实现的。 这一般需要很大的开销,但是当遍历操作的数量大大超过可变操作的数量时,这种方法可能比其他替代方法更 有效。在不能或不想进行同步遍历,但又需要从并发线程中排除冲突时,它也很有用。“快照”风格的迭代器方法在创建迭代器时使用了对数组状态的引用原创 2015-11-17 14:42:17 · 1383 阅读 · 1 评论 -
JDK并发工具类源码学习系列——LinkedBlockingQueue
LinkedBlockingQueue是一个基于已链接节点的、范围任意的 blocking queue。此队列按 FIFO(先进先出)排序元素。队列的头部 是在队列中时间最长的元素。队列的尾部 是在队列中时间最短的元素。新元素插入到队列的尾部,并且队列获取操作会获得位于队列头部的元素。链接队列的吞吐量通常要高于基于数组的队列,但是在大多数并发应用程序中,其可预知的性能要低。原创 2015-11-23 19:04:23 · 1512 阅读 · 0 评论 -
JDK并发工具类源码学习系列——PriorityBlockingQueue
PriorityBlockingQueue是一个基于优先级堆的无界的并发安全的优先级队列(FIFO),队列的元素按照其自然顺序进行排序,或者根据构造队列时提供的 Comparator 进行排序,具体取决于所使用的构造方法。实现原理PriorityBlockingQueue通过使用堆这种数据结构实现将队列中的元素按照某种排序规则进行排序,从而改变先进先出的队列顺序,提供开发者改变队列中元素的顺序的能力原创 2015-11-20 17:19:55 · 4603 阅读 · 0 评论 -
JDK并发工具类源码学习系列——SynchronousQueue
SynchronousQueue是一种特殊的阻塞队列,不同于LinkedBlockingQueue、ArrayBlockingQueue和PriorityBlockingQueue,其内部没有任何容量,任何的入队操作都需要等待其他线程的出队操作,反之亦然。如果将SynchronousQueue用于生产者/消费者模式,那么相当于生产者和消费者手递手交易,即生产者生产出一个货物,则必须等到消费者过来取原创 2015-11-30 19:01:19 · 3690 阅读 · 0 评论 -
JDK并发工具类源码学习系列——介绍
JDK并发工具类是JDK1.5引入的一大重要的功能,集中在java.util.concurrent包下,java.util.concurrent包下还包括了java.util.concurrent.atomic以及java.util.concurrent.locks两个子包。java.util.concurrent包主要包含了并发集合类以及线程池和信号量三组重要工具类;原创 2015-12-01 17:00:14 · 3008 阅读 · 1 评论