Set不安全
package com.qi.demo01.UnSafe;
import java.util.*;
import java.util.concurrent.CopyOnWriteArraySet;
/**
* @author zjq
* @date 2020/3/25 21:04
*/
/**
* 同理可证:ConcurrentModificationException
* 1.Set<String> set = Collections.synchronizedSet(new HashSet<>());
* 2.Set<String> set = new CopyOnWriteArraySet<>();
*/
public class SetTest {
public static void main(String[] args) {
//Set<String> set = new HashSet<>();
Set<String > set = new CopyOnWriteArraySet<>();
for(int i = 0;i<30;i++){
new Thread(()->{
set.add(UUID.randomUUID().toString().substring(0,5));
System.out.println(set);
},String.valueOf(i)).start();
}
}
}
HashSet 的底层是什么?
private static final Object PRESENT = new Object();//值不变!
Set的本质就是map Key是无法重复的