在多线程情况下,使用
Set<Object> set = new HashSet<>();
会产生 java.util.ConcurrentModificationException异常
解决方式:
-
Set<Object> set = Collections.synchronizedSet(new HashSet<>());
-
Set<Object> set = new CopyOnWriteArraySet<>();
代码如下:
public static void main(String[] args) {
Set<Object> set = new HashSet<>();
// Set<Object> set = Collections.synchronizedSet(new HashSet<>());
//Set<Object> set = new CopyOnWriteArraySet<>();
for(int i = 1;i <= 100; i++){
new Thread(()->{
set.add(UUID.randomUUID().toString().substring(0,8));
System.out.println(set);
},String.valueOf(i)).start();
}
}