死磕 java集合之HashSet源码分析

问题(1)集合(Collection)和集合(Set)有什么区别?(2)HashSet怎么保证添加元素不重复?(3)HashSet是否允许null元素?(4)HashSet是有序的吗?(5)HashSet是同步的吗?(6)什么是fail-fast?简介集合,这个概念有点模糊。广义上来讲,java中的集合是指java.util包下面的容器类,包括和Collection及Map相关的所有...

死磕 java集合之LinkedHashSet源码分析

通过上面的学习,我们知道LinkedHashSet底层使用LinkedHashMap存储元素,而LinkedHashMap是支持按元素访问顺序遍历元素的,也就是可以用来实现LRU的,还记得吗?传送门【死磕 java集合之LinkedHashMap源码分析】那么,LinkedHashSet支持按元素访问顺序排序吗?让我们一起来分析下。首先,LinkedHashSet所有的构造方法都是调用HashS...

死磕 java集合之PriorityQueue源码分析

是元素的自然顺序,一种是通过比较器来比较;(4)modCount,修改次数,有这个属性表示PriorityQueue也是fast-fail的;不知道fast-fail的,查看这篇文章的彩蛋部分:【死磕 java集合之HashSet源码分析】。入队入队有两个方法,add(E e)和offer(E e),两者是一致的,add(E e)也是调用的offer(E e)。public boolean ...

死磕 java集合之ArrayBlockingQueue源码分析

问题(1)ArrayBlockingQueue的实现方式?(2)ArrayBlockingQueue是否需要扩容?(3)ArrayBlockingQueue有什么缺点?简介ArrayBlockingQueue是java并发包下一个以数组实现的阻塞队列,它是线程安全的,至于是否需要扩容,请看下面的分析。队列队列,是一种线性表,它的特点是先进先出,又叫FIFO,就像我们平常排队一样,先到先得...

死磕 java集合之SynchronousQueue源码分析

问题(1)SynchronousQueue的实现方式?(2)SynchronousQueue真的是无缓冲的吗?(3)SynchronousQueue在高并发情景下会有什么问题?简介SynchronousQueue是java并发包下无缓冲阻塞队列,它用来在两个线程之间移交元素,但是它有个很大的问题,你知道是什么吗?请看下面的分析。源码分析主要属性// CPU的数量static fina...

死磕 java集合之PriorityBlockingQueue源码分析

简介PriorityBlockingQueue是java并发包下的优先级阻塞队列,它是线程安全的,如果让你来实现你会怎么实现它呢?还记得我们前面介绍过的PriorityQueue吗?点击链接直达【死磕 java集合之PriorityQueue源码分析】还记得优先级队列一般使用什么来实现吗?点击链接直达【拜托,面试别再问我堆(排序)了!】源码分析主要属性// 默认容量为11private ...

死磕 java集合之ConcurrentLinkedQueue源码分析

问题(1)ConcurrentLinkedQueue是阻塞队列吗?(2)ConcurrentLinkedQueue如何保证并发安全?(3)ConcurrentLinkedQueue能用于线程池吗?简介 ConcurrentLinkedQueue只实现了Queue接口,并没有实现BlockingQueue接口,所以它不是阻塞队列,也不能用于线程池中,但是它是线程安全的,可用于多线程环境中。那么...

死磕 java集合之DelayQueue源码分析

ition(); 从属性我们可以知道,延时队列主要使用优先级队列来实现,并辅以重入锁和条件来控制并发安全。因为优先级队列是无界的,所以这里只需要一个条件就可以了。还记得优先级队列吗?点击链接直达【死磕 java集合之PriorityQueue源码分析】主要构造方法public DelayQueue() {} public DelayQueue(Collection<? extends E> c...
关于我们 联系我们 友情链接 LMLPHP后院 
本站由 LMLPHP 强力驱动 ©2014-2019 LMLPHP 耗时0.028449(s)
2019-05-26 21:17:34 1558876654