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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

柠檬糖

初级黑马

  • 黑马币:22

  • 帖子:6

  • 精华:0

声明一个共享数组,起两个线程,两个线程分别隔一段时间(可以写一个随机数),给数组中添加数据,每一个线程为数组添加3个数据即可。

3 个回复

倒序浏览
等着看大神
回复 使用道具 举报
等大神~~~~~
回复 使用道具 举报
package com.itheima.网上练习题;

public class 第21一个数组两个线程公用随机添加各三个元素 {

        /**Test21--【】声明一个共享数组,起两个线程,
         * 两个线程分别隔一段时间(可以写一个随机数),给数组中添加数据,
         * 每一个线程为数组添加3个数据即可。
         * @param args
         */
        static int[] arr = new int[6];
        public static void main(String[] args) {
                // TODO Auto-generated method stub
                final Pr p0 = new Pr();
   new Thread(){
           public void run(){
                   try {
                        p0.print5();
                } catch (InterruptedException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                }
           }
   }.start();
               
               
     new Thread(){
             public void run(){
                     try {
                                p0.print6();
                        } catch (InterruptedException e) {
                                // TODO Auto-generated catch block
                                e.printStackTrace();
                        }
             }
     }.start();
     
   
        }

}
class Pr{
        int[] arr = new int[6];
        int fig=1;
        static int i=0;
       
        public void print5() throws InterruptedException{
                while(true){
                       
               
                synchronized (this) {
                        if (fig!=1) {
                                wait();
                        }else{
                         if (i==5) {
                                for(int a : arr){
                                        System.out.print(a+" ");
                                }
                                return;
                        }else {
                                System.out.println(Thread.currentThread().getName()+"输出1");
                                arr[i]=(int) (Math.random()*100);
                                i++;
                                fig=2;
                                notify();
                               }
                           }       
                        }
                }
        }
        public void print6() throws InterruptedException{
                while(true){
                        synchronized (this) {
                                if (fig!=2) {
                                        wait();
                                }else{
                                        if (i==5) {
                                                for(int a : arr){
                                                        System.out.print(a+" ");
                                                }
                                                return;
                                        }else{
                                                System.out.println(Thread.currentThread().getName()+"输出2");
                                                arr[1]= (int) (Math.random()*100);
                                        i++;
                                        fig=1;
                                        notify();
                                        }
                                }
                               
                        }
                }
        }
}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马