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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© xtx321 中级黑马   /  2016-3-2 14:14  /  375 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马