publicclassListTest{publicstaticvoidmain(String[] args){//并发下List是不安全的//List<String> list = new ArrayList<>(); 没有锁不安全//List<String> list = new Vector<>(); 第一种解决方案//List<String> list = Collections.synchronizedList(new ArrayList<>());第二种解决方案List<String> list =newCopyOnWriteArrayList<>();//CopyOnWriteArrayList 写入时服饰 COW 计算机程序设计领域的一种优化策略//写入时避免覆盖,造成数据问题//CopyOnWrite --- Vector 用synchronized 效率低下for(int i =1; i <=10; i++){newThread(()->{
list.add(UUID.randomUUID().toString().substring(0,5));System.out.println(list);},String.valueOf(i)).start();}}}
publicclassSetTest1{publicstaticvoidmain(String[] args){Set<String> set =newCopyOnWriteArraySet<>();//Hashet的底层是Hashmapfor(int i =1; i<=10; i++){newThread(()->{
set.add(UUID.randomUUID().toString().substring(0,5));System.out.println(set);},String.valueOf(i)).start();}}}
publicclassMapTest002{publicstaticvoidmain(String[] args){//map 加载因子,初始化容量 工作中不用Hashmap new HashMap<>(16,0.75)Map<String,String> map =newConcurrentHashMap<>();for(int i =1; i<=10; i++){newThread(()->{
map.put(Thread.currentThread().getName(),UUID.randomUUID().toString().substring(0,5));System.out.println(map);},String.valueOf(i)).start();}}}