题目:模拟叫号看病
需求说明
1、某科室一天需看普通号50个,特需号10个,
2、特需号看病时间是普通号的2倍
3、开始时普通号和特需号并行叫号,叫到特需号的概率比普通号高
4、当普通号叫完第10号时,要求先看完 全部特需号,再看普通号
5、使用多线程模拟这一过程
解题代码:
public class Demo3 implements Runnable{
@Override
public 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();
}
}
}
}