方法一1.将List list = new ArrayList<>();换成List list = new Vector<>();底层加了synchronized
方法二2.换成List list =Collections.synchronizedList(new ArrayList<>());底层加了synchronized
方法三:3.(JUC)下 改成List list = new CopyOnWriteArrayList<>();
为什么用这种方式:CopyOnWrite 写入时复制 计算机程序设计领域的一种优化策略;多个线程调用的时候,list,读取的时候,固定的,写入(覆盖)在写入的时候避免覆盖,造成数据问题!CopyOnWriteArrayList 比 Vector Nb 在哪里? 效率高
publicclassList_Security{publicstaticvoidmain(String[] args){//List<String> list = new ArrayList<>();//List<String> list = new Vector<>();//List<String> list = Collections.synchronizedList(new ArrayList<>());
List<String> list =newCopyOnWriteArrayList<>();for(int i =0; i <20; i++){newThread(()->{
list.add(UUID.randomUUID().toString().substring(0,5));
System.out.println(list);},String.valueOf(i)).start();}}}