gpt4 book ai didi

java - ConcurrentModifcationException 偶尔发生

转载 作者:行者123 更新时间:2023-11-29 07:25:58 26 4
gpt4 key购买 nike

我有一个函数,其中一行据说是为了防止并发修改异常列表 parseObjectKeys = new ArrayList<>(parseObject.keySet());然而,它仍然时不时地发生

 private static void convertParseObject(ParseObject parseObject,
HashMap<String, HashMap<String, WritableMap>> topLevel,
ArrayList<Task<Void>> tasks) {
if (parseObject != null) {
String className = parseObject.getClassName();
String id = parseObject.getObjectId();

if (!topLevel.containsKey(className)) {
topLevel.put(className, new HashMap<String, WritableMap>());
}

if (!topLevel.get(className).containsKey(id)) {
final WritableMap flatMap = Arguments.createMap();
flatMap.putString("class", className);
flatMap.putString("id", id);

if (parseObject.isDataAvailable()) {

topLevel.get(className).put(id, flatMap);

// This is required to prevent a ConcurrentModificationException
List<String> parseObjectKeys = new ArrayList<>(parseObject.keySet());

for (final String key : parseObjectKeys) {
Object value = parseObject.get(key);

if (value instanceof String) {
flatMap.putString(key, (String) value);
} else if (value instanceof Boolean) {
flatMap.putBoolean(key, (Boolean) value);
} else if (value instanceof Integer) {
flatMap.putInt(key, (Integer) value);
} else if (value instanceof Double) {
flatMap.putDouble(key, (Double) value);
} else if (value instanceof Date) {
flatMap.putString(key, Utils.toISO8601UTC((Date)value));
}
else {
if (value != null &&
!(value instanceof ParseACL)) {
Log.e(TAG, "Unknown type: " + value.getClass());
}
}
}
}
}
}

最佳答案

HashMap不是线程安全的数据结构,所以你可以使用 ConcurrentHashMap而不是 HashMap .

使用ConcurrentHashMap<String, ConcurrentHashMap<String, WritableMap>> topLevel代替 HashMap<String, HashMap<String, WritableMap>> topLevel .

然后放List<String> parseObjectKeys = new ArrayList<>(parseObject.keySet());synchronized block 。

希望对您有所帮助。

关于java - ConcurrentModifcationException 偶尔发生,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52759264/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com