摘要:
一、简介 HashSet是Set的一种实现方式,底层主要使用HashMap来确保元素不重复,允许存放null值,线程不安全。 二、案例 2.1 案例一 import java.util.HashSet; import java.util.Set; public class HashSetTest1 阅读全文
摘要:
一、简介 LinkedBlockingDeque来自于JDK1.5的JUC包,是一个支持并发操作的有界阻塞队列,底层数据结构是一个双链表,可以看作LinkedList的并发版本! LinkedBlockingDeque实现了BlockingDeque接口,而BlockingDeque继承了Block 阅读全文
摘要:
一、概述 Java集合框架主要包括两种类型的容器,一种是集合(Collection),存储一个元素集合,另一种是图(Map),存储键/值对映射。Collection接口又有3种子类型,List、Set和Queue,再下面是一些抽象类,最后是具体实现类,常用的有ArrayList、LinkedList 阅读全文
摘要:
一、简介 双端队列是一种特殊的队列,它的两端都可以进出元素,故而得名双端队列。 ArrayDeque是一种以数组方式实现的双端队列,内部使用数组进行元素存储,不允许存储null值,可以高效的进行元素查找和尾部插入取出,是用作队列、双端队列、栈的绝佳选择,性能比LinkedList还要好,它是非线程安 阅读全文
摘要:
# 一、简介 `DelayQueue`是`java`并发包下的延时阻塞队列,常用于实现定时任务。 # 二、案例 ```java public class DelayQueueTest { public static void main(String[] args) { DelayQueue queu 阅读全文
摘要:
一、简介 TreeSet底层是采用TreeMap实现的一种Set,所以它是有序的,同样也是非线程安全的。 二、源码分析 // TreeSet实现了NavigableSet接口,所以它是有序的 public class TreeSet<E> extends AbstractSet<E> impleme 阅读全文
摘要:
一、简介 LockSupport是用来创建锁和其他同步类的基本线程阻塞原语。 LockSupport中的park()和unpark(thread)的作用分别是阻塞线程和解除阻塞线程,而且park()和unpark(thread)不会遇到“Thread.suspend和Thread.resume所可能 阅读全文
摘要:
一、简介 读写锁是一种特殊的锁,它把对共享资源的访问分为读访问和写访问,多个线程可以同时对共享资源进行读访问,但是同一时间只能有一个线程对共享资源进行写访问,使用读写锁可以极大地提高并发量。 二、特性 读写锁具有以下特性: | 是否互斥 | 读 | 写 | | | | | | 读 | 否 | 是 | 阅读全文
摘要:
一、简介 StampedLock是java8中新增的类,它是一个更加高效的读写锁的实现,而且它不是基于AQS来实现的,它的内部自成一派逻辑。 StampedLock具有三种模式:写模式、读模式、乐观读模式。 ReentrantReadWriteLock中的读和写都是一种悲观锁的体现,StampedL 阅读全文