线程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 ...
随机推荐
- jacoco + ant远程统计(tomcat/spring boot)服务的代码覆盖率
什么是Jacoco? Jacoco(java code coverage)是一个开源的Java代码覆盖率工具,Jacoco可以嵌入到Ant .Maven中,并提供了EclEmma Eclipse插件, ...
- 使用debugger在程序中加入断点
使用debugger在程序中加入断点 版权声明:本文为博主原创文章,未经博主允许不得转载. 我们可以在程序中加入debugger语句,这样Firefox的调试工具会停留在这条语句上,代码也暂停执行,和 ...
- Golang通过反射获取结构体的标签
Golang通过反射获取结构体的标签 例子: package main import ( "fmt" "reflect" ) type resume struc ...
- python web自动化测试框架搭建(功能&接口)——测试用例执行和结果收集
由于unittest框架中结果收集在不同文件中,所以此处重写结果收集方法,加入执行时间,失败信息,失败截图等 TestRunner.py # coding=utf-8 import sys impor ...
- Ural Amount of Degrees(数位dp)
传送门 Amount of Degrees Time limit: 1.0 secondMemory limit: 64 MB Description Create a code to determi ...
- 10.jmeter jsr223 javascript 深度比对json object
function sortJSON(data, key, way) { //log.info(" " + key + " ------------------- &quo ...
- IDF-CTF-cookie欺骗 writeup
题目链接: http://ctf.idf.cn/index.php?g=game&m=article&a=index&id=40 知识点:base64解码, cookie欺骗 ...
- Netty之大名鼎鼎的EventLoop
EventLoopGroup 与Reactor: 前面的章节中我们已经知道了,一个Netty 程序启动时,至少要指定一个EventLoopGroup(如果使用到的是NIO,通常是指NioEventLo ...
- tmux多终端工具
在Linux服务器上没有办法像在桌面系统一样开多个终端,所以有时后进行一些操作不是太方便,所以可以使用tmux工具,创建多个终端. 这里仅仅是简单的介绍一下如何创建多个终端和进行多个终端之间切换,tm ...
- tomcat内存使用情况
预发布阿里云服务器的容器 tomcat会自己无缘无故重启,故引出一些查看tomcat内存使用情况观察的细枝末节: 1️⃣当前端口号进程信息和GC使用情况(1)显示端口的PID:lsof -i:端口示例 ...