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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  1. package fa;
  2. /*1.用线程模拟竞拍过程
  3. 创建4条线程,代表4个人,设置线程名称分别为:
  4. (“匿名A”,“匿名B”,“匿名C”,“匿名D”)。
  5. 4个人一共可以竞拍8次,每次竞拍出的价为1-100(包含1和100)的随机数,
  6. 每次出价需要3000ms,创建1个map集合<线程名,出价>将这四个人存入进去,出价默认为0,
  7. 开始竞价后将每个人每次出的价存放进去,竞拍结束后以每个人最后出价为准。
  8. 将竞拍价最高的线程名和成交价打印出来
  9. 打印格式如下:
  10.         匿名A以98元的价格成交*/

  11. import java.util.*;

  12. public class test1 implements Runnable{
  13.        
  14.         static TreeMap<String,Integer>m=new TreeMap<String,Integer>();
  15.         static int num=0;//限制竞价次数的变量,
  16.         //static Thread t;
  17.         public void run(){
  18.                 while(true){
  19.                 synchronized(""){       
  20.                         if(num<8){
  21.                 try {
  22.                         Thread.sleep(3000);
  23.                         jingjia();
  24.                        
  25.                 } catch (InterruptedException e) {
  26.                         // TODO Auto-generated catch block
  27.                         e.printStackTrace();
  28.                 }}}}
  29.         }
  30.        
  31.         public  void jingjia(){
  32.                 Thread t=Thread.currentThread();
  33.                 Random r=new Random();
  34.                 int mon=r.nextInt(100)+1;
  35.                 //System.out.println(t.getName()  );
  36.                 m.put(t.getName(),mon);
  37.                 num++;
  38.         }
  39.         public static void print1() throws InterruptedException//打印出其中出最高价的线程名,出价
  40.         {
  41.                
  42.                 int temp=0;String ss1;String st=null;
  43.         Set<Map.Entry<String, Integer>> s=         m.entrySet();
  44.         //System.out.println(s);
  45.                 Iterator<Map.Entry<String, Integer>> i=s.iterator();
  46.                 while(i.hasNext()){
  47.                         Map.Entry<String,Integer>me=i.next();
  48.                         Integer v=me.getValue();
  49.                          ss1=me.getKey();
  50.                         if(v>temp){
  51.                                 temp=v;
  52.                                 st=ss1;
  53.                         }
  54.                 }
  55.                 System.out.println(st+"以"+temp+"元的价格成交");
  56.                
  57.         }
  58. public static void main(String[]args) throws InterruptedException{
  59.         test1 t=new test1();
  60.         Thread 匿名A=new Thread(t,"匿名A");
  61.         Thread 匿名B=new Thread(t,"匿名B");
  62.         Thread 匿名C=new Thread(t,"匿名C");
  63.         Thread 匿名D=new Thread(t,"匿名D");

  64.         匿名A.start();
  65.         匿名B.start();
  66.         匿名C.start();
  67.         匿名D.start();
  68.        
  69.         Thread.sleep(30000);//使主线程休眠足够长时间,保证其他线程先完成
  70.         System.out.println(m);
  71.         print1();
  72. }
  73. }
复制代码

1 个回复

正序浏览
666666666666666666666
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马