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);
   }

2个回答

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

wangguohui0726
wangguohui0726 回复wangguohui0726: 那个我试了 可以用 不会抛异常,但是发现了新的问题,生成i个随机数 但是集合里存的往往没有i那么多个元素。
一年多之前 回复
wangguohui0726
wangguohui0726 这个和ArrayList一样用呗,改个名import包就可以了呗
一年多之前 回复

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

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问