private static void setNotSafe() {
// Set<String> set = new HashSet<>(); //原始测试
// Set<String> set = Collections.synchronizedSet(new HashSet<>()); //解决java.util.ConcurrentModificationException 方法1
Set<String> set = new CopyOnWriteArraySet<>(); //解决java.util.ConcurrentModificationException 方法2
for (int i = 1; i <= 30; i++) {
new Thread(() -> {
set.add(UUID.randomUUID().toString().substring(0, 8));
System.out.println(set);
}, String.valueOf(i)).start();
}
new HashSet<>().add("a"); //思考:HashSet.add()的方法,只需要传递一个元素,而HashMap是需要传递 key-value键值对?
}
解决方案:
1、 使用JUC中的CopyOnWriteArraySet底层还是使用CopyOnWriteArrayList进行实例化
2、使用工具类中的Collections.synchronizedSet(new HashSet<>());解决