Java多线程——模拟看病叫号

需求说明:

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

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

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

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

使用多线程模拟这一过程

思路:

这题如果把专家号和普通号都写为子线程就难了,

把专家号写成子线程,把普通号写成主线程这样就简单了,因为子线程和主线程是并行的,所以不会有任何的影响。

主线程:

java 复制代码
package KB;

public class kbTest {
    public static void main(String[] args) {
        // 专家号和普通号两个线程同时执行,普通号是主线程,专家号是子线程
        Lookbing lookbing = new Lookbing();
        Thread thread1 = new Thread(lookbing);

        // 叫到特需号的概率比普通号高
        thread1.setPriority(Thread.MAX_PRIORITY);
        Thread.currentThread().setPriority(Thread.MIN_PRIORITY);
        thread1.start();

        // 20个普通号
        for (int i = 1; i <= 50; i++) {
            System.out.println("普通号:"+i+"号病人正在看病");
            try {
                Thread.sleep(500);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            // 当普通号叫完第10号时,要求先看完全部特需号,再看普通号
            if(i==10){
                //
                try {
                    thread1.join();
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

子线程:

java 复制代码
public class Lookbing implements Runnable{
    @Override
    public void run() {
        for (int i = 1; i <= 10; i++) {
            System.out.println("专家号:"+i+"号病人正在看病");
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }

}
相关推荐
贫民窟的勇敢爷们8 小时前
Java 与 Python 如何选型与融合
java·开发语言·python
流氓也是种气质 _Cookie8 小时前
Chrome Performance常见名词解释(FP, FCP, LCP, DCL, FMP, TTI, TBT, FID, CLS)
开发语言·javascript·ecmascript
gihigo19988 小时前
基于MATLAB的LTE物理层仿真系统
开发语言·matlab
小宇的天下8 小时前
Calibre DESIGNrev 单元(Cell)操作核心指南
java·前端·javascript
刚子编程8 小时前
C# Join 实战:左连接写法、字符串拼接与 EF Core 性能调优
开发语言·c#·solr·join
阿苟8 小时前
spring重点详解
java·后端·面试
fie88898 小时前
基于粒子群优化(PSO)算法的带STATCOM的IEEE 30节点系统最优潮流MATLAB实现
开发语言·算法·matlab
Stream_Silver8 小时前
【JNA实战:Java无缝调用Windows API模拟键盘输入】
java·开发语言·windows
Sam_Deep_Thinking9 小时前
为什么选微服务而不是动态扩容单体
java·jvm·微服务
焦糖玛奇朵婷9 小时前
回收小程序开发案例分享
java·开发语言