Java 多线程赋值问题

查看:326
本文介绍了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();
            
        }
    }
}

解决方案

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

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

这篇关于Java 多线程赋值问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆