List<String> list =newArrayList<>();//new Vector<>();//Collections.synchronizedList(new ArrayList<>());//new CopyOnWriteArrayList<>();for(int i =1; i <=100; i++){
newThread(()->{
list.add(UUID.randomUUID().toString().substring(0,8));
System.out.println(list);}, String.valueOf(i)).start();}
当 i 即线程数过高时,ArrayList是非线程安全的容器,会出现 java.util.ConcurrentModificationException 故障问题,可以使用以上三种方法解决问题。
Set<String> set =newHashSet<>();//Collections.synchronizedSet(new HashSet<>());//new CopyOnWriteArraySet<>();for(int i =1; i <=30; i++){
newThread(()->{
set.add(UUID.randomUUID().toString().substring(0,8));
System.out.println(set);}, String.valueOf(i))