Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/371.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 同步一个进程和并行组_Java_Android - Fatal编程技术网

Java 同步一个进程和并行组

Java 同步一个进程和并行组,java,android,Java,Android,我得到了ConcurrentModificationException,所以我决定尝试一些新的东西 我有一个点的ArrayList,它在Recycler视图中用于下载并行线程中的所有图 当我在写ArrayList而以后没有链式下载时,是否可以锁定这些下载 因为现在我在片段中使用这个: public static final Object lock = new Object(); synchronized (lock) { /*download and write to ArrayList*/ }

我得到了ConcurrentModificationException,所以我决定尝试一些新的东西

我有一个点的ArrayList,它在Recycler视图中用于下载并行线程中的所有图

当我在写ArrayList而以后没有链式下载时,是否可以锁定这些下载

因为现在我在片段中使用这个:

public static final Object lock = new Object();
synchronized (lock) { /*download and write to ArrayList*/ }
在我想用的每个细胞里

synchronized (lock) { /*download graphs*/ }

我认为当一个单元格加载图形时,所有单元格都将等待,然后第二个单元格将加载,依此类推。

ConcurrentModificationException通常表示在迭代器进行过程中修改了集合。它不一定在不同的线程中:

List<Object> someList = new ArrayList<>();
someList.add("an item");

for (Object item : someList) {
    // throws ConcurrentModificationException
    someList.add("a new item");
}
List-someList=new-ArrayList();
添加(“一项”);
对于(对象项:someList){
//抛出ConcurrentModificationException
添加(“新项目”);
}

很难知道你的情况到底发生了什么。如果将
ArrayList
s替换为,会发生什么情况?它们的效率远低于
ArrayList
s,但至少与网络操作相比,这可能并不重要。

不幸的是,我也在使用Collections.sort(),CopyOnWriteArrayList不支持它。但无论如何,我会投票回答这个问题,因为我以前没有听说过CopyOnWriteArrayList。你能用
theList.sort(null)
替换它吗?事实上,这正是
Collections.sort(theList)
所做的(但只有在targetSdk>25的情况下)可能无法工作,因为我使用了4种不同类型的排序和比较器。好吧,因为没有其他答案,我标记它,因为在大多数情况下它仍然有效。谢谢