Java 多线程赋值问题

使用三个线程给一个集合进行赋值操作,要保证集合里面有三个数,但是一直都赋值不了,求大神指点

import java.util.ArrayList;
public class MyThread{

    public static void main(String[] args) {
        ArrayList<Integer> arrayList = new ArrayList<>();    
        changeArray(arrayList);
        System.out.println(arrayList);
    }

    public static void changeArray(ArrayList<Integer> arrayList) {
        for (int i = 0; i < 3; i++) {    
            new Thread01() {

                @Override
                public void run() {
                    arrayList.add((int) (Math.random() * 10));
                }

            }.start();
            
        }
    }
}
阅读 4.2k
1 个回答

程序改造一下即可。。。。

public class MyThread{

    private static List<Thread> list=new ArrayList<>();
    public static void main(String[] args) throws InterruptedException {
         
    List<Integer> arrayList =new CopyOnWriteArrayList<Integer>();
      changeArray(arrayList);
       for (Thread t : list) {
            t.join();
        }
        System.out.println(arrayList);
    }

    public static void changeArray(final List<Integer> arrayList) {
        for (int i = 0; i < 3; i++) {    
            /*new Thread() {

                @Override
                public void run() {
                    arrayList.add((int) (Math.random() * 10));
                }

            }.start();*/
            Thread thread=new Thread(new Runnable() {
                
                @Override
                public void run() {
                    arrayList.add((int) (Math.random() * 10));
                    
                }
            });
            list.add(thread);
            thread.start();
        }
    }
}    
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题