黑马程序员技术交流社区

标题: 多线程 wait(1000)解释 [打印本页]

作者: xtx321    时间: 2016-3-2 14:14
标题: 多线程 wait(1000)解释
this.wait(1000);  //释放锁    这个语句当前线程为什么没有进入等待状态
声明一个共享数组,起两个线程,
两个线程分别隔一段时间(可以写一个随机数),给数组中添加数据,
每一个线程为数组添加3个数据即可。
         * @param args
         */
        public static void main(String[] args) {
                int[] arr = new int[6];  //定义共享数组
                ArrayAdd aa = new ArrayAdd(arr);  
                new Thread(aa).start();  //开启新线程
                new Thread(aa).start();
               
        }
}
class ArrayAdd implements Runnable {
        private int[] arr;
        private int count = 0;
        public ArrayAdd(int[] arr) {
                this.arr = arr;
        }
        public void run() {
                while(true) {
                        if(count < arr.length) {
                                Random r = new Random();
                                synchronized (this) {
                                        arr[count] = r.nextInt(10) + 1;  //往数组中添加元素
                                        System.out.println(Thread.currentThread().getName()+"添加了"+arr[count]);
                                        count++;
                                        try {
                                                this.wait(1000);  //释放锁
                                        } catch (InterruptedException e) {
                                               
                                                e.printStackTrace();
                                        }
                                }
                        }else {
                                break;
                        }
                       
                       
                }
        }
}




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2