线程join方法demo-模拟叫号看病
package cn.chapter4.test5;
public class SicknessDemo {
/**
* 模拟叫号看病
* @param args
*
* 思路:把普通号看病写在主线程里,特需号看病写在子线程里,当普通号看到第10个人之后,让
* 特需号的子线程强制执行,也就是在相应位置写一句 special.join()
*/
public static void main(String[] args) {
// 创建特需号线程
MyThread special = new MyThread("特需号", 10, 3000);
// 修改主线程名称为普通号
Thread.currentThread().setName("普通号");
// 设置特需号线程优先级高,提高特需号叫到的概率
special.setPriority(8);
// 启动子线程,也就是特需号线程
special.start();
// 主线程普通号循环叫号看病
for (int i = 0; i < 20; i++) {
System.out.println(Thread.currentThread().getName() + ":" + (i + 1)
+ "号病人在看病!");
// 普通号叫到第10个号,特需号线程强行执行,阻塞主线程
if (i == 9) {
try {
// 子线程(特需号线程)强行执行
special.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
try {
// 普通号看病间隔时间
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
class MyThread extends Thread {
private String name; // 线程名字
private int number;
private int time;
public MyThread(String name, int number, int time) {
super(name); // 调用THread类的构造方法,在创建线程对象时指定线程名
this.number = number;
this.time = time;
}
@Override
// run方法里模拟子线程特需号的看病过程
public void run() {
for (int i = 0; i < number; i++) {
System.out.println(this.getName() + ":" + (i + 1) + "号病人在看病!");// this是当前的线程对象
try {
// 设置特需号看病时间
Thread.sleep(time);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
线程join方法demo-模拟叫号看病的更多相关文章
- Thread线程join方法自我理解
Thread线程join方法自我理解 thread.join():等待thread线程运行终止,指的是main-thread(main线程)必须等待thread线程运行结束,才能继续thread.jo ...
- java线程join方法使用方法简介
本博客简介介绍一下java线程的join方法,join方法是实现线程同步,可以将原本并行执行的多线程方法变成串行执行的 如图所示代码,是并行执行的 public class ThreadTest { ...
- 线程join方法 小demo
1.第一个示例: package cn.threaddemo; public class T implements Runnable { public static int a = 0; @Overr ...
- python线程join方法
转载:http://www.cnblogs.com/cnkai/p/7504980.html Python多线程与多进程中join()方法的效果是相同的. 下面仅以多线程为例: 首先需要明确几个概念: ...
- 【转】线程join()方法的含义
在很多情况下,主线程生成并启动了子线程,如果子线程里要进行大量的耗时运算,主线程往往将于子线程之前结束,但是如果主线程处理完其它事务后,需要用到子线程的处理结果,也就是主线程需要等待子线程执行完成之后 ...
- [java] java 线程join方法详解
join方法的作用是使所属线程对象正常执行run方法,而对当前线程无限期阻塞,直到所属线程销毁后再执行当前线程的逻辑. 一.先看普通的无join方法NoJoin.java public class N ...
- 线程join方法详解
执行逻辑:在当前代码块(比如main方法)中的线程A执行了join方法, 那么当代码块(main)执行到join方法时,会停止继续向下执行,一直到线程A执行完毕, main方法才会继续向下执行. 代码 ...
- java多线程之守护线程以及Join方法
版权声明:本文出自汪磊的博客,转载请务必注明出处. 一.守护线程概述及示例 守护线程就是为其它线程提供"守护"作用,说白了就是为其它线程服务的,比如GC线程. java程序中线程分 ...
- C#中Thread类中Join方法的理解(转载)
指在一线程里面调用另一线程join方法时,表示将本线程阻塞直至另一线程终止时再执行 比如 using System; namespace TestThreadJoin { class Pro ...
随机推荐
- Why is HttpContext.Current null during the Session_End event?
Why is HttpContext.Current null during the Session_End event? On Session_End there is no communicati ...
- (\w+)\s*, \s*(\w+)
\s表示空格 \w表示任何字符,字母数字下划线 _就表示下划线
- vue对组件以数组方式赋值的问题
当从后台直接调接口返回数据 直接将数组array赋值给定义的变量,会导致组件无法更改其它值,例如多选框,多选下拉框,会导致无法选中其它的值,也无法取消当前已赋值的选中项 data() { return ...
- RESTful_基础知识
目录 目录 前言 RESTful REST原则 REST的Web原则 分层系统原则 RESTful的实现 SOA 面向服务的体系结构 RPC样式 Web服务 RPC的实现过程 SOAP 简单对象访问协 ...
- input只输入数字和小数后两位
html:<input name="" type="tel" value="" placeholder="请输入金额&qu ...
- excel wps access mysql数据表格的查询之路
简直血崩,最近去做兼职,每天都有大量的表格数据要整理. 开始 还是 用 excel的用起来还算顺畅,慢慢慢慢的发现了各种弊端.大概类似于分组排序什么什么的好多啦~~~不过也确实是用了不到两个小时就能比 ...
- _exit和exit的区别
在linux的标准库函数中,有一套称作高级I/O的函数,我们熟知的printf .fopen .fread .fwrite都在此列,他们也被称作缓冲I/O.其特征是对应每一个打开的文件,都存在一个缓冲 ...
- debian7下安装eclipse
apt-get install build-essential 完成后从eclipse官网上下载C++专用的版本,直接解压缩即可
- (Vue)移动端点击输入框,弹出键盘,底部被顶起问题
(Vue)移动端点击输入框,弹出键盘,底部被顶起问题:https://www.jianshu.com/p/210fbc846544 问题描述:Vue开发中,当我们相对于父视图的底部布局子控件时,需要用 ...
- Robot Framework 常见问题处理方式
1.运行testcase报错error 2解决办法 打开python的scripts目录,看看是否有pybot.bat文件,没有则创建一个 pybot.bat内容: @Echo off python ...