ArrayList多线程添加元素异常,怎么解决?

代码如下,运行时有时候会成功,有的时候就会报错

 public static void main(String[] args) {
       Random random = new Random();
       int i = random.nextInt(20);
       ArrayList<String> arrayList = new ArrayList<>();
       for (int i1 = 0; i1 < i; i1++) {
           new Thread(()->{
               arrayList.add(Thread.currentThread().getName());
           }).start();
       }
       System.out.println(arrayList);
   }

代码的目的就是随机生成多个线程,将线程名字存到集合里然后打印,但是总出错,搞不懂啊

CopyOnWriteArrayList来代替你的arraylist啊,一个是线程安全的,一个不是