当前位置: 代码迷 >> 综合 >> 多线程练习:模拟叫号看病
  详细解决方案

多线程练习:模拟叫号看病

热度:60   发布时间:2024-02-07 16:01:07.0

题目:模拟叫号看病

需求说明

1、某科室一天需看普通号50个,特需号10个,

2、特需号看病时间是普通号的2倍

3、开始时普通号和特需号并行叫号,叫到特需号的概率比普通号高

4、当普通号叫完第10号时,要求先看完 全部特需号,再看普通号

5、使用多线程模拟这一过程

解题代码:

public class Demo3 implements Runnable{@Overridepublic void run() {for(int i=0;i<10;i++) {String name= Thread.currentThread().getName();System.out.println(name+(i+1)+"号病人在看病!");try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}}}
}class Demo3Test{public static void main(String[] args) {Demo3 demo3 = new Demo3();Thread vip = new Thread(demo3, "特需号:");vip.setPriority(10);vip.start();for (int i = 0; i < 50; i++) {if (i == 10) {try {vip.join();} catch (InterruptedException e) {e.printStackTrace();}}String name = Thread.currentThread().getName();System.out.println("普通号:"+(i + 1) + "号病人在看病!");try {Thread.sleep(500);} catch (InterruptedException e) {e.printStackTrace();}}}
}

 

  相关解决方案