首页 > 其他分享 >多线程模拟叫号看病

多线程模拟叫号看病

时间:2024-09-10 10:52:18浏览次数:11  
标签:Thread 看病 int void num 多线程 public 模拟 String

//普通号
public class NormalThread extends Thread{
    private int num=20;

    public int getNum() {
        return num;
    }

    public void setNum(int num) {
        this.num = num;
    }

    public NormalThread(String name, int num){
        super(name);
        this.num=num;
    }

    @Override
    public void run() {
        for (int i = 0; i < num; i++) {
            String type=Thread.currentThread().getName();
            System.out.println(type+(i+1)+"号病人正在看病");
            try {
                Thread.sleep(500);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            if(i==9){
                try {
                    Thread.sleep(5000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        }

    }
}
//特需号
public class VipThread extends Thread{
    private int num=10;

    public int getNum() {
        return num;
    }

    public void setNum(int num) {
        this.num = num;
    }

    public VipThread(String name, int num){
        super(name);
        this.num=num;
    }
    @Override
    public void run() {
        for (int i = 0; i < num; i++) {
            String type=Thread.currentThread().getName();
            System.out.println(type+(i+1)+"号病人正在看病");
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }

    }
}
//运行
public class Test {
    public static void main(String[] args) {
        VipThread vip = new VipThread("特需号",10);
        NormalThread normal = new NormalThread("普通号",20);
        vip.setPriority(10);//通过设置权重,特需号更容易叫到
        normal.setPriority(1);
        vip.start();
        normal.start();
        if(normal.getNum()==10){//当普通号叫到10号时,停止叫普通号,先让特需号看完
            try {
                vip.join();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
        }
    }

标签:Thread,看病,int,void,num,多线程,public,模拟,String
From: https://blog.csdn.net/qq_61236034/article/details/142093212

相关文章

  • 使用 Parallel 类进行多线程编码(下)
    2.Parallel.ForEach()的使用 从ForEach()这个名字可以看出该方法是用来遍历泛型集合的,新建一个ASP.NETCore Web应用的项目,如下:         在Index.cshtml.cs文件中增加一个UserInfo.cs的类,代码如下:publicclassUserInfo{publicint......
  • Numba最近邻插值(CPU+ GPU + Z轴切块 + XYZ轴切块 + 多线程)
    文章目录最近邻插值(加速方法)(1)scipy.ndimage.zoom(2)Numba-CPU加速(3)Numba-GPU加速(4)Numba-CPU加速(Z轴切块)(5)Numba-CPU加速(XYZ轴切块)(6)Numba-CPU加速(XYZ轴切块)+多线程输入数据插值倍数时耗scipy.ndimage.zoom(1024,1024,512)4172.16sNumba-CPU(1024,1024,512)456.58sN......
  • CSP模拟 取模
    最近开始写CSP模拟的题,实际上考的题一点也不CSP题意有一个长度为\(n\)的序列\(A\),\(0\leqA_i<k\),你可以每次选取一个区间,将区间内所有元素\(+1\),然后将区间内所有元素对\(k\)取模。问最少几次操作可以把序列中所有元素都变为\(0\)。思路假设现在有一个数列\([2,3,......
  • 二、并发编程与多线程-2.2、多线程(中)
    2.2、多线程(中)2.2.4、为什么启动线程不能直接调用run()方法?调用两次start()方法会有什么后果?答:在Java中,启动线程不能直接调用run()方法的原因是,run()方法是线程的执行体,通过调用start()方法来启动线程可以创建一个新的线程并使其运行。如果直接调用run()方法,则会在当前线......
  • 每日OJ_牛客_单词倒排(字符串模拟)
    目录牛客_单词倒排(字符串模拟)解析代码牛客_单词倒排(字符串模拟)单词倒排__牛客网时间限制:C/C++1秒,其他语言2秒空间限制:C/C++32M,其他语言64M题目描述:对字符串中的所有单词进行倒排。说明:1、构成单词的字符只有26个大写或小写英文字母;2、非构成单词的字符均视为单词......
  • “PLUS模型+“生态系统服务多情景模拟预测
    生态系统服务是人类直接或间接从生态系统中获得的惠益,在应对城市挑战和实施可持续发展方面发挥着至关重要的作用。随着全球城市化的快速发展, 频繁的人类活动导致了土地利用的快速变化,导致生态系统结构和功能的变化,影响生态系统服务的供应。因此,生态系统服务评估与未来城市土......
  • C++ 多线程代码性能分析——Oracle Developer Studio工具教程
        最近写项目的时候,为了提升性能,把原来一些单线程的代码改成了并行运行。这里我用到的用于评估性能提升效果的工具是OracleDeveloperStudio,不过刚上手时,发现网上相关的教程和博客较少,有些功能的使用也是摸索着过来的,这一过程可谓是十分痛苦了……如今距离初次接触......
  • 【洛谷 P1996】约瑟夫问题 题解(数组+模拟+循环)
    约瑟夫问题题目描述个人围成一圈,从第一个人开始报数,数到的人出列,再由下一个人重新从开始报数,数到的人再出圈,依次类推,直到所有的人都出圈,请输出依次出圈人的编号。注意:本题和《深入浅出-基础篇》上例题的表述稍有不同。书上表述是给出淘汰名小朋友,而该题是全部出圈。输入......
  • 多线程篇(阻塞队列- DelayQueue)(持续更新迭代)
    目录一、简介二、基本原理四、代码示例简单定时调度任务多消费者定时调度任务得出结论四、应用场景一、简介DelayQueue是一个无界的BlockingQueue,用于放置实现了Delayed接口的对象,其中的对象只能在其到期时才能从队列中取走。这种队列是有序的,即队头对象的延迟到......
  • 多线程篇(阻塞队列- PriorityBlockingQueue)(持续更新迭代)
    目录一、简介二、类图三、源码解析1.字段讲解2.构造方法3.入队方法put浮调整比较器方法的实现入队图解4.出队方法takedequeue下沉调整比较器方法的实现出队图解四、总结一、简介PriorityBlockingQueue队列是JDK1.5的时候出来的一个阻塞队列。但是该队......