java笔记--线程的插队行为
对线程的插队行为的理解
在编写多线程时,会遇到让一个线程优先于其他线程运行的情况,
此时除了可以设置其优先级高于其他线程外,更直接的方式是使用Thread类的join()方法
--如果朋友您想转载本文章请注明转载地址"http://www.cnblogs.com/XHJT/p/3894992.html"谢谢--
使用join()方法,可实现"插队"效果。当插队的线程运行结束后,其他线程将继续执行。
join()方法是Thread类的一个静态方法,它有三种形式:
join() : 等待调用该方法的线程终止
join(long millis) : 等待调用该方法的线程终止的时间最长为millis毫秒
join(long millis,int nanos) : 等待调用该方法的线程终止的时间最长为millis毫秒加纳秒
注:如果有线程中断了运行join()方法的线程,则抛出InterruptedException
代码实例:
package com.xhj.thread; /**
* 用join()来实现线程的插队
*
* @author XIEHEJUN
*
*/
public class JoinThread implements Runnable { @Override
public void run() {
for (int i = 1; i < 6; i++) {
try {
Thread.sleep(100);
} catch (Exception e) {
// TODO: handle exception
}
System.out.println("紧急情况:" + i + "号车出发");
} } public static void main(String[] args) {
JoinThread join = new JoinThread();
Thread thread = new Thread(join);
thread.start();
for (int i = 1; i < 6; i++) {
try {
Thread.sleep(100);
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("正常情况下:" + i + "号车出发");
try {
thread.join();
} catch (Exception e) {
e.printStackTrace();
}
} } }
java笔记--线程的插队行为的更多相关文章
- java笔记--线程休眠sleep()的运用
线程休眠sleep()方法的运用 在多线程编程中,有时需要让某个线程优先执行.除了可以设置这个线程的优先级为最高外,更加理想的方法是休眠其他线程,若有线程中断了正在休眠的线程,则抛出Interrupt ...
- java笔记线程电影院卖票最终版
* 如何解决线程安全问题呢? * * 要想解决问题,就要知道哪些原因会导致出问题:(而且这些原因也是以后我们判断一个程序是否会有线程安全问题的标准) * A:是否是多线程环境 * B:是否有共享数据 ...
- Java笔记 - 线程与并行API
一.线程简介 1.线程与进程 每个进程都具有独立的代码和数据空间,进程间的切换会有较大的开销.线程是轻量级的进程,同一类线程共享代码和数据空间,每个线程有独立的运行栈和程序计数器(PC),线程切换的开 ...
- java笔记----线程状态转换函数
注意:stop().suspend()和 resume()方法现在已经不提倡使用,这些方法在虚拟机中可能引起“死锁”现象.suspend()和 resume()方法的替代方法是 wait()和 sle ...
- java笔记线程电影院卖票改进版
通过加入延迟后,就产生了连个问题: * A:相同的票卖了多次 * CPU的一次操作必须是原子性的 * B:出现了负数票 * 随机性和延迟导致的 public class SellTicketD ...
- java笔记线程两种方式模拟电影院卖票
public class SellTicketDemo { public static void main(String[] args) { // 创建三个线程对象 SellTicket st1 = ...
- java笔记线程方式1线程暂停yield
public static void yield():暂停当前正在执行的线程对象,并执行其他线程. 让多个线程的执行更和谐,但是不能靠它保证一人一次. public class ThreadYield ...
- java笔记线程方式1线程终端与停止
public final void stop():让线程停止,过时了,但是还可以使用.public void interrupt():中断线程. 把线程的状态终止,并抛出一个InterruptedEx ...
- java笔记线程方式1等待终止
public final void join():等待该线程终止 public class ThreadJoinDemo { public static void main(String[] args ...
随机推荐
- Weinre远程调试工具
1.Weinre是什么? Weinre全称 Web Inspector Remote,是一个简单好用的远程调试工具.我们可以在自己的PC上修改对应网页的页面元素.样式,或是查看Javascript变量 ...
- 手淘的移动端适配方案flexible
基于 vue-cli 配置手淘的 lib-flexible + rem,实现移动端自适应 安装 flexible npm install lib-flexible --save 引入 flexible ...
- Linux命令-用户、用户组、权限
参考资料: http://www.linuxidc.com/Linux/2014-07/104445.htm Linux入门教程:如何手动创建一个Linux用户 http://www.linux ...
- docker-compose管理daocker
Docker-compose管理docker服务 1.安装docker-compose @首先确保服务器上已经安装docker环境,如果没有安装使用如下命令进行安装: # yum -y insta ...
- spring AOP 之四:@AspectJ切入点标识符语法详解
@AspectJ相关文章 <spring AOP 之二:@AspectJ注解的3种配置> <spring AOP 之三:使用@AspectJ定义切入点> <spring ...
- SQL更改表架构
修改SQL架构: ALTER SCHEMA 新架构 TRANSFER 旧架构.对象名称
- c# winform项目用到的部分知识点总结
项目用到的知识点总结,欢迎大家吐槽: /// <summary> /// 转换非yyyy-MM-dd的字符串为DateTime类型 /// </summary> public ...
- 微信小程序开发总结(详细)
转载: 小程序开发总结(详细) 这段时间一直在做小程序,总结下.后续可能会不断更新,努力写仔细点,争取让人看到就能会写. 一,页面结构. 这基本是小程序的标准目录结构.我们从上到下解释下:pages文 ...
- [整理]EF6.X更新了什么(版本历史中文版)
下定决心以后用EF6.x版本了.想看看有什么更新特性,结果去人家github老巢一看,EF7 for vnext,顿时蛋疼了起来.想想国内这种技术氛围,有多少还在用ASP的,有多少还在用ADO.NET ...
- 第二节:Java开发环境的搭建
一.认识并安装JDK 1.JDK(Java Development Kit)是Java开发工具集,包括Java运行环境(JRE).Java开发工具以及一些基础类库,进行Java开发所必须安装的软件. ...