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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 刘邦m 初级黑马   /  2019-3-21 12:46  /  810 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

package day05;

import java.util.*;

public class Dame6 {
    public static void main(String[] args) {
    /*用线程模拟竞拍过程
                创建4条线程,代表4个人,设置线程名称分别为:(“匿名A”,“匿名B”,“匿名C”,“匿名D”)。4个人一共可以竞拍8次,
                每次竞拍出的价为1-100(包含1和100)的随机数,每次出价需要3000ms,
                创建1个map集合<线程名,出价>将这四个人存入进去,出价默认为0,开始竞价后将每个人每次出的价存放进去,
                竞拍结束后以每个人最后出价为准。将竞拍价最高的线程名和成交价打印出来
                打印格式如下:
                匿名A以98元的价格成交
        */
        Runnable runnable = new Runnable() {
            int num=0,mapName=0;
            Object ob= new Object();
            Map<String, Integer> map=new HashMap<>();

            @Override
            public void run() {
                Set<String> keys = map.keySet();
                String naem=Thread.currentThread().getName();
                map.put(naem,0);

                while(true){
                    synchronized (ob){
                        if (num<8){
                            try {
                                Thread.sleep(300);
                            } catch (InterruptedException e) {
                                e.printStackTrace();
                            }

                            int ran = new Random().nextInt(100)+1;

                            map.put(Thread.currentThread().getName(), ran);
                            System.out.println(Thread.currentThread().getName()+"  "+ran);
                            num++;
                        }else{break;}
                    }
                }

                mapName++;
                if(mapName>=4){
                    System.out.println();
                    for (String key : keys) {
                        //求最大数
                        System.out.print(key+"-->"+map.get(key)+"   ");
                    }
                }
            }
        };

        Thread t1 = new Thread(runnable,"匿名A");
        Thread t2 = new Thread(runnable,"匿名B");
        Thread t3 = new Thread(runnable,"匿名C");
        Thread t4 = new Thread(runnable,"匿名D");

        t1.start();
        t2.start();
        t3.start();
        t4.start();




    }
}

0 个回复

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