一个class类里面有个List对象,List的add,remove都使用了synchronized关键字,class的遍历List方法也加了synchronized,在调用notifyOnDataChangeListener的时候,还是报错ConcurrentModificationException.例如下面的类
package com.kongge.javalib;
import java.util.ArrayList;
import java.util.List;
public class DataChangeManager {
private final List<OnDataChangeListener> dataChangeListenerList;
public DataChangeManager() {
dataChangeListenerList = new ArrayList<>();
}
// 添加监听器
public void addOnDataChangeListener(OnDataChangeListener listener) {
synchronized (dataChangeListenerList) {
if (!dataChangeListenerList.contains(listener)) {
dataChangeListenerList.add(listener);
}
}
}
// 移除监听器
public void removeOnDataChangeListener(OnDataChangeListener listener) {
synchronized (dataChangeListenerList) {
dataChangeListenerList.remove(listener);
}
}
// 通知监听器
public void notifyOnDataChangeListener(String data) {
synchronized (dataChangeListenerList) {
// 出ConcurrentModificationException的地方