问题标签 [copyonwritearraylist]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
66 浏览

java - 通过读取平面文件创建 ArrayList

我正在尝试读取平面文件并将其内容传输到 ArrayList.By 代码不起作用

平面文件

日志显示在这张图片中日志:平面文件的内容到数组列表 我无法理解为什么我的 for 循环将最后一条记录添加到数组列表中。任何建议将不胜感激

0 投票
1 回答
393 浏览

java - CopyOnWriteArrayList 可以帮助允许从已放入迭代器中的不同线程中删除项目

有一个地图按类型保存相同事件的事件监听器列表作为键,

func_1()将开始从映射中获取一种类型的侦听器列表并迭代列表以处理每个侦听器的事件。

当一个侦听器完成其处理时,它会要求将其从地图中的侦听器列表中删除。

因为侦听器位于迭代器中,将其从原始列表中删除将导致java.util.ConcurrentModificationException获取iterator.previous()下一个侦听器。

问题是如果使用 CopyOnWriteArrayList 复制侦听器列表然后对其进行迭代器,因为它是列表的副本,当侦听器从其他线程中删除时它仍然会抛出吗?

只是简单地制作普通列表的副本而不是CopyOnWriteArrayList迭代器有什么区别吗?

0 投票
1 回答
91 浏览

android - CopyOnWriteArraylist 同步方法

它的方法来自 CopyOnWriteArrayList.class

好的,可以说我有

我有方法

我认为比 copyOnWriteArrayList 同步方法“设置”上(this)

在我的方法中,我锁定了我的列表(同步(tasksList))为什么方法工作正确。我认为行( tasksList.set(index, task); )将不起作用,因为 tasksList 已经阻止了上面的行

0 投票
2 回答
56 浏览

arraylist - 当线程在活动时不处于(可运行)状态时

我希望你们一切都好。所以来到这个问题。我有这部分代码:

基本上,我在完整代码(如下)中创建的多个线程同时访问此列表,这些线程负责进行一些计算并返回结果,然后primelist通过调用方法将其添加到此列表中addToList(String list_elm)

但是,在所有线程都被终止(即:完成它们的工作)之后,在primelist. 因此,经过一番研究,事实证明 ArrayList 不是线程安全的类,因此它的方法也不是。我想问以下(也许很深)问题:

线程在执行一行代码时是否会被放入(等待//定时等待)..,也就是说它正在调用该方法addToList(String list_elm)并且它到达了该行primelist.add(list_elm);但是在添加元素时它恰好停止了!

如果不能,请澄清我对(尤其是)ArrayList 案例的困惑。((基本上是怎么回事?^^))

完整代码:

0 投票
0 回答
32 浏览

java - CopyOnWriteArrayList 索引从 1 开始

您知道为什么 CopyOnWriteArrayList 中的索引从 1 开始吗?它说该列表有 14 个项目,并且 imageDetailsList.get(0) 抛出 NullPointerException

这就是我填充列表的方式

在此处输入图像描述

0 投票
0 回答
50 浏览

java - CopyOnWriteArrayList 也会出现 ConcurrentModificationException

我正在使用以下代码创建一个 CopyOnWriteArrayList,修改其中的元素,然后打印这些元素。我无法理解为什么在使用 CopyOnWriteArrayList 时会出现 ConcurrentModificationException。

0 投票
1 回答
199 浏览

java - 为什么 CopyOnWriteArrayList 使用 getArray() 来访问数组引用?

CopyOnWriteArrayList 中几乎所有的方法都使用 getArray() 来直接调用数组。这种行为有原因吗?例如 :

或者

0 投票
2 回答
670 浏览

java - 迭代器、列表迭代器和 CopyOnWriteArrayList 的区别

考虑一个 ArrayList,其中用于 Iterator 和 List 迭代器操作,当迭代列表并且每当 Collection 对象发生更改时,它就会抛出 ConcurrentModificationException,如下所示:

更新迭代器对象时不是这种情况,即如下所示:

而当涉及到 copyOnWriteArrayList 时,如果迭代器对象被更新为像下面这样的普通迭代器的删除操作(或)listIterator 被更新(添加/删除),它会抛出 UnsupportedOperationException:


对于上述结果,我有几个问题:

1)对于一个ArrayList,如果一个迭代器能够在迭代过程中使用迭代器对象修改列表,为什么要使用copyOnWriteArrayList?

1)为什么copyOnWriteArrayList迭代器更新遇到Iterator对象变化时抛出unsupportedOperationExceptions,而collection对象发生变化时没有异常?

3)看起来上面2个场景是相反的。请告诉我这些什么时候使用以及在哪些场景中使用?

这完全令人困惑......

0 投票
2 回答
1132 浏览

java - 迭代 CopyOnWriteArrayList 时出现 UnsupportedOperationException

我在一本书中看到以下声明:

任何基于写时复制IteratorListIterator(例如添加、设置或删除)调用的变异方法都会抛出UnsupportedOperationException.

但是当我运行以下代码时,它工作得很好并且不会抛出UnsupportedOperationException.

上面的代码给出了以下结果:

list为什么在使用该方法修改给定值时没有出现异常remove

0 投票
1 回答
44 浏览

multithreading - CopyOnWriteArrayList 中的两个线程更新

两个线程假设 t1 和 t2 都试图同时在 copyOnWriteArrayList 中执行更新操作......那么哪些线程更改将首先复制到原始列表中?