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 ...
随机推荐
- Go语言学习笔记十二: 范围(Range)
Go语言学习笔记十二: 范围(Range) rang这个关键字主要用来遍历数组,切片,通道或Map.在数组和切片中返回索引值,在Map中返回key. 这个特别像python的方式.不过写法上比较怪异使 ...
- mongodb二进制安装与yum安装
一.什么是mongodb MongoDB是一个高性能,开源,无模式的文档型数据库,是当前NoSql数据库中比较热门的一种.MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当 ...
- C++运行时动态类型
RTTI 运行时类型识别(RTTI)的引入有三个作用: 配合typeid操作符的实现: 实现异常处理中catch的匹配过程: 实现动态类型转换dynamic_cast typeid操作符的实现 静态类 ...
- SpringBoot入门 (一) HelloWorld
一 什么是springboot springboot是一个全新的框架,它设计的目的简化spring项目的初始环境的搭建和开发,主要有以下几个特点: 1.简化初始配置 ,可与主流框架集成: 2.内置Se ...
- 破局人工智能:构建AI,与腾讯云一起探索语音应用场景
本文来自腾讯云技术沙龙,本次沙龙主题为AI平台及智能语音应用解析 近年来,人工智能技术快速发展,与其他行业的结合也成为业界不断探索的方向.在人工智能基础和工具方面,AI平台已成为降低人工智能门槛的关键 ...
- Redis configuration
官方2.6配置如下: # Redis configuration file example # Note on units: when memory size is needed, it is pos ...
- nodejs --- 上传文件并保存到磁盘
先复习下整个请求的过程 const express = require('express'); const static = require('express-static'); const cook ...
- PHP 类与对象 全解析( 二)
目录 PHP 类与对象 全解析( 一) PHP 类与对象 全解析( 二) PHP 类与对象 全解析(三 ) 7.Static关键字 声明类成员或方法为static,就可以不实例化类而直接访问.不能通过 ...
- [android] 手机卫士接收打电话广播显示号码归属地
使用广播接收者接收打电话的意图,显示号码归属地 新建一个类OutCallReceiver继承系统的BroadcastReceiver 重写onReceive()方法 调用getResultData() ...
- An internal error occurred during: "Updating status for Tomcat v7.0 Server at localhost..."
tomcat启动maven工程的时候提示如下错误信息: An internal error occurred during: "Updating status for Tomcat v7.0 ...