并发HashMap迭代器:线程的安全性如何?

the*_*tna 4 java multithreading thread-safety concurrenthashmap

我使用并发hashmap来创建矩阵.它的指数范围为100k.我创建了40个线程.每个线程访问矩阵的那些元素并对其进行修改并将其写回矩阵,如下所示:

ConcurrentHashMap<Integer, ArrayList<Double>> matrix = 
    new ConcurrentHashMap<Integer, ArrayList<Double>>(25);

for (Entry(Integer,ArrayList<Double>)) entry: matrix.entrySet())
    upDateEntriesOfValue(entry.getValue());     
Run Code Online (Sandbox Code Playgroud)

我没有发现它的线程安全.值经常返回为null,我的程序崩溃了.有没有其他方法使其线程安全.或者这是线程安全的,我在其他一些地方有bug.有一点是我的程序在单线程模式下不崩溃.

Jea*_*art 11

iterator确实是线程安全的ConcurrentHashMap.

但是你的代码中不是线程安全的是ArrayList<Double>你似乎更新了!您的问题可能来自此数据结构.

您可能希望使用适合您需要的并发数据结构.