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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张镓仁1 中级黑马   /  2016-10-24 23:26  /  1022 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

3.有一个抽奖池,该抽奖池中存放了奖励的金额,该抽奖池用一个数组int[] arr = {10,5,20,50,100,200,500,800,2,80,300};
        创建两个抽奖箱(线程)设置线程名称分别为“抽奖箱1”,“抽奖箱2”,随机从arr数组中获取奖项元素并打印在控制台上,格式如下:
       
        抽奖箱1 又产生了一个 10 元大奖
        抽奖箱2 又产生了一个 100 元大奖        3.有一个抽奖池,该抽奖池中存放了奖励的金额,该抽奖池用一个数组int[] arr = {10,5,20,50,100,200,500,800,2,80,300};         创建两个抽奖箱(线程)设置线程名称分别为“抽奖箱1”,“抽奖箱2”,随机从arr数组中获取奖项元素并打印在控制台上,格式如下:                抽奖箱1 又产生了一个 10 元大奖        抽奖箱2 又产生了一个 100 元大奖

1 个回复

倒序浏览
上次写另一题的代码,改一下就可以用了
import java.util.*;
class DualArr{
        public static void main(String[] args)throws Exception{
                int[] arr = new int[6];
               
                new Thread(new SynArr(arr)).start();                                //传入共享数组,开启线程
                new Thread(new SynArr(arr)).start();
               
                Thread.sleep(5000);                                                                        //主线程等待,让数据完全录入
                System.out.println(Arrays.toString(arr));
        }
}
class SynArr implements Runnable{
        int[] arr;                                                                                                //将共享数组定义成属性
        public SynArr(int[] arr){
                this.arr = arr;
        }
        public synchronized void run(){
                try{
                        for(int i=0;i<3;i++){
                                int time = (int) (Math.random()*1000);                //生成随机毫秒数
                                Thread.sleep(time);                                                        //让线程等待,等待时间为上面的随机数
                                System.out.println(Thread.currentThread().getName());//输出当前活动的线程名
                                synchronized(DualArr.class){
                                        putArr(i, time);                                                //将随机数存入数组i号位
                                }
                        }
                }catch(Exception e){
                        System.out.println(e);
                }
        }
        public void putArr(int i, int value){
                if(arr[i]==0)                                                                                //如果i号位已经有元素则存入其下一位
                        arr[i] = value;
                else
                        putArr(i+1, value);
        }
}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马