对线程的插队行为的理解

在编写多线程时,会遇到让一个线程优先于其他线程运行的情况,

此时除了可以设置其优先级高于其他线程外,更直接的方式是使用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笔记--线程的插队行为的更多相关文章

  1. java笔记--线程休眠sleep()的运用

    线程休眠sleep()方法的运用 在多线程编程中,有时需要让某个线程优先执行.除了可以设置这个线程的优先级为最高外,更加理想的方法是休眠其他线程,若有线程中断了正在休眠的线程,则抛出Interrupt ...

  2. java笔记线程电影院卖票最终版

    * 如何解决线程安全问题呢? *  * 要想解决问题,就要知道哪些原因会导致出问题:(而且这些原因也是以后我们判断一个程序是否会有线程安全问题的标准) * A:是否是多线程环境 * B:是否有共享数据 ...

  3. Java笔记 - 线程与并行API

    一.线程简介 1.线程与进程 每个进程都具有独立的代码和数据空间,进程间的切换会有较大的开销.线程是轻量级的进程,同一类线程共享代码和数据空间,每个线程有独立的运行栈和程序计数器(PC),线程切换的开 ...

  4. java笔记----线程状态转换函数

    注意:stop().suspend()和 resume()方法现在已经不提倡使用,这些方法在虚拟机中可能引起“死锁”现象.suspend()和 resume()方法的替代方法是 wait()和 sle ...

  5. java笔记线程电影院卖票改进版

    通过加入延迟后,就产生了连个问题: * A:相同的票卖了多次 *   CPU的一次操作必须是原子性的 * B:出现了负数票 *   随机性和延迟导致的 public class SellTicketD ...

  6. java笔记线程两种方式模拟电影院卖票

    public class SellTicketDemo { public static void main(String[] args) { // 创建三个线程对象 SellTicket st1 = ...

  7. java笔记线程方式1线程暂停yield

    public static void yield():暂停当前正在执行的线程对象,并执行其他线程. 让多个线程的执行更和谐,但是不能靠它保证一人一次. public class ThreadYield ...

  8. java笔记线程方式1线程终端与停止

    public final void stop():让线程停止,过时了,但是还可以使用.public void interrupt():中断线程. 把线程的状态终止,并抛出一个InterruptedEx ...

  9. java笔记线程方式1等待终止

    public final void join():等待该线程终止 public class ThreadJoinDemo { public static void main(String[] args ...

随机推荐

  1. SpringBoot学习之自动装配

    在前面使用SSM集成时,我们可以使用注解实现无配置化注入,但是这种依赖被进行“人工干预了的”,换句话就是说我们手动进行装配,那么此时还没有达到SpringBoot这种自动装配的效果,那么究竟Sprin ...

  2. 《LeetBook》leetcode题解(18) : 4Sum[M]

    我现在在做一个叫<leetbook>的免费开源书项目,力求提供最易懂的中文思路,目前把解题思路都同步更新到gitbook上了,需要的同学可以去看看 书的地址:https://hk029.g ...

  3. 删除none 的images报错 image has dependent child images 解决办法

    这个错是因为在要删除的images之后创建了该images的父images 方法: docker image inspect --format='{{.RepoTags}} {{.Id}} {{.Pa ...

  4. Jfinal本地eclipse+tomcat运行项目时候遇到错误Exception starting filter

    今天想在本地eclipse上启动tomcat让项目在本地运行,但是老是报错类找不到异常. 也可能报其它错误,大概都是classNotFoundException. 九月 19, 2018 5:42:2 ...

  5. [心平气和读经典]The TCP/IP Guide(005)

    The TCP/IP Guide[Page 47, 48, 49] I created The TCP/IP Guide to provide you with an unparalleled bre ...

  6. Cacheable redis 宕机

    使用Cacheable注解Redis方法时,如果Redis服务器挂了,就直接抛出异常了, java.net.ConnectException: Connection refused: connect ...

  7. Formtastic: Forms Made Crazy Easy for Rails Developers

    Formtastic is a Rails plugin by Justin French that aims to take the headaches out of building forms ...

  8. Node.js数据流Stream之Readable流和Writable流

    一.前传 Stream在很多语言都会有,当然Node.js也不例外.数据流是可读.可写.或即可读又可写的内存结构.Node.js中主要包括Readable.Writable.Duplex(双工)和Tr ...

  9. Express开发性能优化

    1.使用浏览器缓存 在app.js里添加 var CACHETIME = 60 * 1000 * 60 * 24 * 30; app.use(express.static(path.join(__di ...

  10. FineUI分组显示弹框最新的在最上边

    function TOBTCorrFun(obj){ var msgContent = JSON.parse(obj.dataJson); var tJson = JSON.stringify(obj ...