黑马程序员技术交流社区
标题:
一个多线程问题
[打印本页]
作者:
马嘉
时间:
2014-10-26 09:59
标题:
一个多线程问题
这个代码的目的是:开启两个线程,隔一段时间就对数组添加数据
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
public class ArrayDemo {
//共享的一个数组
public static ArrayList<Integer> arr=new ArrayList<Integer>();
public static void main(String[] arge) throws InterruptedException{
//创建一个runnable匿名对象
Runnable thre=new Runnable() {
public void run() {
//不设置锁
// synchronized(this){
for(int x=0;x<3;x++){
//获取随机的数存入集合内
Random r=new Random();
int y=r.nextInt(10);
System.out.println(y);
arr.add(y);
System.out.println(Thread.currentThread().getName());
try {
//睡3秒
Thread.sleep(3000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
};
Thread t=new Thread(thre);
// t.setName("majia");
t.start();
Thread t1=new Thread(thre);
t1.start();
//主线程等待着两个线程执行完毕后,在执行
t.join();
t1.join();
System.out.println(arr);
}
}
问题来了,为什么,经常会出现,数组0角标位置为null,没有添加数据,求大神解答
作者:
郑飞
时间:
2014-10-26 11:38
ArrayList不同步 可能和这个有关
作者:
郑飞
时间:
2014-10-26 11:40
不过我试了好多次 都没出现null啊
作者:
马嘉
时间:
2014-10-26 12:16
郑飞 发表于 2014-10-26 11:40
不过我试了好多次 都没出现null啊
我后来加了同步,如果用sleep,还是会出现空值。如果用wait就不会出现null值得现象,现在弄得我很是郁闷,还是的谢谢你了
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2