zoukankan      html  css  js  c++  java
  • 模拟叫号看病

     1 package com.twod4z;
     2 /**
     3  * @program: com.twod4z
     4  * @description:把普通号看病写在主线程里,特需号看病写在子线程里,当普通号看到第10个人之后,让
     5  *              特需号的子线程强制执行,也就是在相应位置写一句 special.join()
     6  * @author: Mr.Lin
     7  * @create: 2019年8月8日
     8  **/
     9 public class SicknessDemo {    
    10     public static void main(String[] args) {                  
    11         // 创建特需号线程                 
    12         MyThreads special = new MyThreads("特需号", 10, 3000);                  
    13         // 修改主线程名称为普通号                  
    14         Thread.currentThread().setName("普通号");                  
    15         // 设置特需号线程优先级高,提高特需号叫到的概率                  
    16         special.setPriority(8);                  
    17         // 启动子线程,也就是特需号线程                  
    18         special.start();              
    19         // 主线程普通号循环叫号看病              
    20         for (int i = 0; i < 20; i++) {                              
    21             System.out.println(Thread.currentThread().getName() + ":" + (i + 1)+ "号病人在看病!");                  
    22             // 普通号叫到第10个号,特需号线程强行执行,阻塞主线程                  
    23             if (i == 9) {                      
    24                 try {                          
    25                     // 子线程(特需号线程)强行执行                          
    26                     special.join();                      
    27                 } catch (InterruptedException e) {                          
    28                     e.printStackTrace();                      
    29                 }                
    30             }                  
    31             try {                      
    32                 // 普通号看病间隔时间                      
    33                 Thread.sleep(500);                  
    34             } catch (InterruptedException e) {                      
    35                 e.printStackTrace();                  
    36             }                    
    37         }          
    38     }          
    39 }
    40       
    41 class MyThreads extends Thread {           
    42     // 线程名字          
    43     private int number;          
    44     private int time;
    45                 
    46     public MyThreads(String name, int number, int time) {              
    47         super(name); // 调用THread类的构造方法,在创建线程对象时指定线程名              
    48         this.number = number;              
    49         this.time = time;         
    50     }
    51                 
    52     @Override          
    53     // run方法里模拟子线程特需号的看病过程    
    54     public void run() {              
    55         for (int i = 0; i < number; i++) {                
    56             System.out.println(this.getName() + ":" + (i + 1) + "号病人在看病!");// this是当前的线程对象                  
    57             try {                      
    58                 // 设置特需号看病时间                      
    59                 Thread.sleep(time);                 
    60             } catch (InterruptedException e) {                                      
    61                 e.printStackTrace();                  
    62             }              
    63         }              
    64     }
    65 
    66 }
    实现

  • 相关阅读:
    配置hbase
    hive配置
    scala及spark配置
    Eclipse 配置hadoop
    腾讯云部署hadoop
    助教总结
    预习非数值数据的编码方式
    预习原码补码
    学习java的第六周
    作业一总结
  • 原文地址:https://www.cnblogs.com/lpbk/p/11319534.html
Copyright © 2011-2022 走看看