A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 马嘉 中级黑马   /  2014-10-26 09:59  /  1002 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

这个代码的目的是:开启两个线程,隔一段时间就对数组添加数据

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,没有添加数据,求大神解答

评分

参与人数 1黑马币 +1 收起 理由
杨佳名 + 1

查看全部评分

3 个回复

正序浏览
郑飞 发表于 2014-10-26 11:40
不过我试了好多次 都没出现null啊

我后来加了同步,如果用sleep,还是会出现空值。如果用wait就不会出现null值得现象,现在弄得我很是郁闷,还是的谢谢你了
回复 使用道具 举报
不过我试了好多次 都没出现null啊
回复 使用道具 举报
ArrayList不同步 可能和这个有关
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马