Java 多线程赋值问题
本文介绍了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屋!
查看全文