並行コレクション・フレームワーク

簡単な紹介

Java语言中的集合框架父接口是Iterable,通过此接口我们就可以的知道现在Collection接口中主要有哪些功能,如图:

ここに画像を挿入説明
あなたがCollectionインタフェースはインタフェースの抽象化の3種類が含まれて見ることができ、これらのインタフェースは、特定の実装に基づいています。

一般的な紹介

反復可能なインタフェース

Iterable接口的主要作用就是迭代循环,接口声明如下:

ここに画像を挿入説明

iterator是一个抽象方法,此方法返回Iterator对象,以进行循环处理,foreach是1.8增加的默认方法,此方法在接口中已经实现,是for循环的语法糖,spliterator也1.8新增加的默认方法,它的作用是将一个集合分割,对每一个Spliterator使用不同的线程处理,增加其性能,符合fail-fast准则。

コレクションインタフェース

Collection接口提供了集合框架最主要、最常用的操作,接口结构如下:

ここに画像を挿入説明

接口提供的方法主要是针对数据的增删改查,removeIf(Predicate<? super E> filter),spliterator() ,stream(),parallelStream(),这四个方法为1.8新增的默认方法,removeIf是可以根据某个条件删除集合中的元素,内部实现遵循fail-fast原则,spliterator()和Iterable中的实现是一样的,stream()和parallerStream()是将集合转换为数据流,方便对集合的数据进行多次处理,得到最终想要的结果。

一覧インタフェース

List接口对Collection接口进行了扩展,允许根据索引位置操作数据,并且内容允许重复,接口结构如下:

ここに画像を挿入説明

接口List最常用的非并发实现类就是ArrayList,它是非线程安全,该类实现了List接口,可以对数据以数组的形式进行组织,使数据有序排序,ArrayList类并不是线程安全的,如果想使用线程安全的链接则可以使用Vector类,Vector类是线程安全的,所以在多线程并发操作数据时也可以无误地处理集合中的数据,但是要注意的是Vector类并不支持Iterator并发删除,此外Vector类有一个子类Stack,它可以实现后进先出(LIFO)的功能。

セット・インタフェース

Set接口是对Collection接口进行扩展,它具有的默认特点是内容不允许重复,排序方式为自然排序,防止元素重复的原理是元素需要重写hashcode()和equals()方法,接口结构如下:

ここに画像を挿入説明

Set接口最常用的不支持并发的实现类就是HashSet,HashSet默认以无序的方式组织元素,而LinkedHashSet类 可以有序的组织元素,接口Set还有一个实现类,就是TreeSet,它不仅实现了Set接口,而且还实现了SortedSet和NavigableSet接口,而SortedSet接口的父接口为Set,SortedSet和Navigable接口在功能上得到了扩展,比如可以获取Set中内容的子集,支持对表头和表尾的数据进行获取等

キュー・インターフェース

Queue接口是对Collection接口进行扩展,它具有的特点是可以方便地操作队列首部元素,接口声明如下:

ここに画像を挿入説明

Queue接口的非并发实现类有PriorityQueue,它是一个基于优先级的无界优先级队列

両端キューのインターフェイス

Queue接口支持对队列头的操作,而接口Deque为双端队列,不仅支持对队列头进行操作,而且还支持对队尾的操作,Deque接口的非并发实现类有ArrayDeque和LinkedList,它们之间的区别是:如果只想实现从队列两端获取数据则使用ArrayDeque,如果想实现从队列两端获取数据时还可以根据索引的位置操作数据则使用LinkedList

ノンブロッキングキュー

非阻塞队列的特点就是队列里面没有数据时,操作队列出现异常或返回null,不具有等待/阻塞的功能
在JDK的并发包中,常见的非阻塞队列有:
  1. ConcurrentHashMapの
  2. ConcurrentSkipListMapの
  3. ConcurrentSkipListSetの
  4. ConcurrentLinkedQueue
  5. ConcurrentLinkedDeque
  6. CopyOnWriteArrayListと
  7. CopyOnWriteArraySet
公開された10元の記事 ウォンの賞賛3 ビュー899

おすすめ

転載: blog.csdn.net/lazy__Feng/article/details/104209041