模拟叫号看病,特需号和普通号 (多线程,join )

编写

 

package com.Input_Output.I_O2;
/**
 *     普通号病人
 * @author Administrator
 *    多线程
 */
public class HospitalTest {
    public static void main(String[] args) {

        //创建对象
        Thread h=Thread.currentThread();    //创建普通号病人 获取当前进程
        vip v=new vip();                    //创建特需号病人

        //设置进程名
        h.setName("普通号");
        v.setName("特需号");

        //run方法
        v.start();                    //特需号
        
        for(int i=1;i<=30;i++) {    //普通号
            System.out.println("●"+h.getName()+":"+i+"号病人正在看病");
            try {
                Thread.sleep(300);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            //当普通号等于10
            if(i==10) {
                try {
                    v.join();        //当普通号等于10,等待特需号终止,再执行
                } catch (InterruptedException e1) {
                    e1.printStackTrace();
                }
            }
        }
    }
}

/**
 *     特需号病人
 */
class vip extends Thread{

    @Override
    public void run() {
        String str=Thread.currentThread().getName();    //获取当前线程名

        for(int i=1;i<=10;i++) {
            System.out.println("○"+str+":"+i+"号病人正在看病");
            try {
                Thread.sleep(600);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}

 

 

 

运行

 

posted @ 2019-03-09 14:50  纸灰  阅读(641)  评论(0编辑  收藏  举报