public class CopyOnWriteArraySet<E> extends AbstractSet<E> implements Serializable
CopyOnWriteArraySet类在内部对其所有操作都使用CopyOnWriteArrayList,因此具有CopyOnWriteArrayList的基本属性。
CopyOnWriteArraySet是线程安全的。
CopyOnWriteArraySet用于基于线程的环境,在该环境中读取操作非常频繁,而更新操作很少。
CopyOnWriteArraySet的迭代器永远不会抛出ConcurrentModificationException。
自创建迭代器以来,对CopyOnWriteArraySet的任何类型的修改都不会在迭代过程中反映出来。
迭代中不支持诸如remove,set和add之类的集合修改方法。此方法将引发UnsupportedOperationException。
以下是CopyOnWriteArraySet类中可用的重要方法的列表。
序号 |
方法与说明 |
---|---|
1 |
add() 将一个对象添加到集合中。 |
2 |
clear() 从集合中删除所有对象。 |
3 |
contains() 如果指定对象是集合中的元素,则返回true。 |
4 |
isEmpty() 如果集合没有元素,则返回true。 |
5 |
iterator() 返回集合的Iterator对象,该对象可用于检索对象。 |
6 |
remove() 从集合中删除指定的对象。 |
7 |
size() 返回集合中元素的数量。 |
|
|
以下是解释CopyOnWriteArraySet功能的示例-
import java.util.Iterator; import java.util.concurrent.CopyOnWriteArraySet; public class Tester { public static void main(String args[]) { //创建一个数组列表 CopyOnWriteArraySet<Integer> set = new CopyOnWriteArraySet(); System.out.println("Initial size of set: " + set.size()); int count[] = {34, 22,10,60,30,22}; //将元素添加到数组列表 for(int i = 0; i < 5; i++) { set.add(count[i]); } System.out.println("Size of set after additions: " + set.size()); //显示设置 System.out.println("Contents of set: " + set); //从数组列表中删除元素 set.remove(10); System.out.println("Size of set after deletion: " + set.size()); System.out.println("Contents of set: " + set); try { Iterator<Integer> iterator = set.iterator(); while(iterator.hasNext()) { iterator.remove(); } }catch(UnsupportedOperationException e) { System.out.println("不支持的方法:"); } System.out.println("Size of set: " + set.size()); } }
这将产生以下结果-
输出结果
Initial size of set: 0 Size of set after additions: 5 Contents of set: [34, 22, 10, 60, 30] Size of set after deletion: 4 Contents of set: [34, 22, 60, 30] 不支持的方法: Size of set: 4
主要内容:1 CopyOnWriteArraySet的概述,2 CopyOnWriteArraySet的源码,2.1 基本结构,2.2 API方法介绍了JDK1.8的CopyOnWriteArraySet的特性和源码实现! 1 CopyOnWriteArraySet的概述 public class CopyOnWriteArraySet< E > extends AbstractSet< E > implements Serializable 前面的文章讲了CopyOnWriteArrayLis
主要内容:文章目录,1.CopyOnWriteArrayList,2.CopyOnWriteArraySetCopyOnWrite的意思是,简单的说就是在对容器操作时,不是直接进行操作,而是先将容器复制一份,对新的容器操作后,再用新的容器覆盖原来的容器。 CopyOnWrite可以实现并发读操作,因为容器的写操作不会读当前容器造成影响。 CopyOnWrite的,不然n个写操作就会有n个容器副本,并且这n个副本会进行覆盖,最终只有1个副本的操作生效。 CopyOnWrite可以保证数据的,但是无
问题内容: 在,没有线程安全版本的HashMap命名的ConcurrentHashMap和线程安全版本TreeMap的命名ConcurrentSkipListMap,但没有对HashSet的。 相反,通常有4种使用线程安全的方法: 1所使用的同时实现和线程安全的。 2使用方式,似乎不推荐这种方式。 3是基于并被广泛使用的。 4是基于CopyOnWriteArrayList的,因此它具有的相同基本属
在这个bug报告中,Doug Lea写道(指的是JDK 5.0的预发布版本): 附言。我知道不推荐使用,并且内部基于。
问题内容: 我想通过Java中的类实现FIFO。 这样的类已经存在了吗?如果没有,我该如何实施自己的? 注意 我在这里http://www.dcache.org/manuals/cells/docs/api/dmg/util/Fifo.html找到了一个类,但其中没有dmg.util。*。我不知道这样的包是否存在。 问题答案: 您正在寻找实现Queue接口的任何类,排除和不使用FIFO算法。 可能
本文向大家介绍Java中的CopyOnWriteArrayList类,包括了Java中的CopyOnWriteArrayList类的使用技巧和注意事项,需要的朋友参考一下 类声明 CopyOnWriteArrayList是ArrayList的线程安全变体,其中可以更改ArrayList的操作(添加,更新,设置方法)创建基础数组的克隆。 CopyOnWriteArrayList将在基于线程的环境中使