JAVA 并发容器和阻塞队列

2020-07-21  本文已影响0人  三石_5f43

JAVA 并发容器和阻塞队列

JAVA 并发容器

ConcurrentHashMapjdk7 vs jdk8 异同和优缺点

image.png

ConcurrentHashMap 与 HashTable 的区别

有关Map 的一些问题

为什么Map 桶中超过8 个才转为红黑树?

为什么不一开始就采用红黑树的结构呢?

CopyOnWriteList 有什么特点?

适用场景

读写规则

特点

缺点

阻塞队列与非阻塞队列

常见的阻塞队列

ArrayBlockingQueue

LinkedBlockingQueue

SynchronousQueue

PriorityBlockingQueue

DelayQueue

阻塞队列常用的方法

操作失败抛出异常

方法 含义 特点
add 添加一个元素 如果队列满了,抛出IllegalStateException
remove 返回并删除队列的头元素 如果队列为空,抛出NoSuchElementException
element 返回队列的头元素 如果队列为空,抛出NoSuchElementException

返回操作结果,不抛出异常

方法 含义 特点
offer 添加一个元素 队列满,返回false ,添加成功 返回true
poll 返回并删除队列的头元素 队列空,删除失败,返回null
peeK 返回队列的头元素 队列空,删除失败,返回null

陷入阻塞

方法 含义 特点
put 添加一个元素 如果队列满,则阻塞,直至队列有空闲
take 返回并删除队列的头元素 如果队列空,则阻塞。直至队列有元素

非阻塞队列

ConCurrentLinkedQueue

boolean casNext(Node<E> cmp, Node<E> val) {
   return UNSAFE.compareAndSwapObject(this, nextOffset, cmp, val);
}
上一篇 下一篇

猜你喜欢

热点阅读