join()方法用于让当前执行线程等待join线程执行结束。其实现原理是不停的检查join线程是否存活,如果join线程存活则让当前线程永远等待。

join()方法部分实现细节

while(isAlive())

{

  wait(0)

}

其中wait(0)表示永远等待下去。

join线程中止后,线程的this.notifyAll()方法会被调用,调用notifyAll()是在JVM里调用的所有在JDK中看不到,大家可以看JVM源码

示例程序:

public calss ThreadTest{

  public static void main(String[] args) throws Exception

  {

    Thread parser1 = new Thread(new Runnable(){

      public void run(){}

});

    Thread parser2 = new Thread(new Runnable(){

      public void run(){}

});

    parser1.start();

    parser2.start();

    parser1.join();

    parser2.join();

    System.out.println("all parser finish");

  }

}

转载于:https://www.cnblogs.com/qinshou/p/7127102.html

Java多线程中join方法详解相关推荐

  1. 61_有关多线程中join方法详解

    Java中join()方法的理解 thread.Join把指定的线程加入到当前线程,可以将两个交替执行的线程合并为顺序执行的线程. 比如在线程B中调用了线程A的Join()方法,直到线程A执行完毕后, ...

  2. JAVA多线程中join()方法的详细分析

    虽然关于讨论线程join()方法的博客已经非常极其特别多了,但是前几天我有一个困惑却没有能够得到详细解释,就是当系统中正在运行多个线程时,join()到底是暂停了哪些线程,大部分博客给的例子看起来都像 ...

  3. JavaScript中join()方法详解

    前言 最近到了一个新公司,这边这个部门只有一个真正的前端,其他大部分都是后端,同样我也是,不过本人也会一点前端,不过没有那么精,好久没写前端了,都快忘了差不多了,现在来回顾一下. join()使用教程 ...

  4. java线程休眠sleep函数_Java多线程中sleep()方法详解及面试题

    一. Java线程生命周期(五个阶段) 新建状态就绪状态运行状态阻塞状态死亡状态 如图 二.sleep方法 API中的解释 static voidsleep(long millis) 使当前正在执行的 ...

  5. java多线程中的join方法详解

    java多线程中的join方法详解 方法Join是干啥用的? 简单回答,同步,如何同步? 怎么实现的? 下面将逐个回答. 自从接触Java多线程,一直对Join理解不了.JDK是这样说的:join p ...

  6. 【面试:并发篇09:多线程:interrupt 方法详解】

    [面试:并发篇09:多线程:interrupt 方法详解] 00.前言 如果有任何问题请指出,感谢. 01.介绍 程序中,有些线程的中断需要外部干预,比如线程中存在while(true)循环,或者存在 ...

  7. Java Thread的interrupt方法详解

    Java Thread的interrupt方法详解 一.概述 interrupt方法的目的是给线程发出中断信号,但是不保证线程真的会中断 中断一个线程只是为了引起该线程的注意,被中断线程可以决定如何应 ...

  8. Java多线程之线程池详解

    Java多线程之线程池详解 目录: 线程池使用及优势 线程池3个常用方式 线程池7大参数深入介绍 线程池底层工作原理 1. 线程池使用及优势 线程池做的工作主要是控制运行的线程的数量,处理过程中将任务 ...

  9. 使用Java操作文本文件的方法详解

    使用Java操作文本文件的方法详解 摘要: 最初java是不支持对文本文件的处理的,为了弥补这个缺憾而引入了Reader和Writer两个类 最初java是不支持对文本文件的处理的,为了弥补这个缺憾而 ...

最新文章

  1. 在pcDuino上运行Python
  2. HTML5(WebSockets)的脆弱性?
  3. poj 3261 后缀数组 找反复出现k次的子串(子串能够重叠)
  4. 020 Android之so文件动态调试
  5. java包含点_Java的21个核心技术点,你知道吗
  6. 给新手程序猿的16个必备小妙招
  7. 每个前端开发者都要理解页面的渲染
  8. 基于ObjectArx进行cad二次开发总结
  9. 代购类网站商品高清晰大图片(1000x1000)的采集解决方案 - hackercai - 博客园
  10. python 字典改变值为2倍
  11. 【JY】45天缩短到4天,突发性Fluent仿真任务怎么破?
  12. 软件测试基础知识 - 集成测试和系统测试的区别,以及它们的应用场景
  13. 《网络游戏核心技术与实战》读书笔记
  14. 群晖域名解析出现错误?别慌,排查原因有步骤
  15. 10以内转大写汉字java_1.输入一个0-10之间的阿拉伯数字,将其转换成中文大写数...
  16. 我是一个功利主义ACMer
  17. 奇妙的AE特效插件之红巨人粒子特效Trapcode Suite
  18. python scrapy 爬博客信息
  19. linux单独用户挂载,Linux与特定用户挂载NFS
  20. 《伯恩斯新情绪》压力下情绪控制方法

热门文章

  1. delphi 获取4位的年份_原来华为手机拨号键盘这么厉害!除了能打电话,还有4个隐藏功能...
  2. Warning: Instance created by `useForm` is not connect to any Form element. Forget to pass `form` pro
  3. 删除表中所有记录只留下第一条,按照rownum排他,使用rowid删除
  4. 网络推广是做什么的教你在网站优化中正确处理死链的技巧!
  5. 纸飞机html,Flyaway.css-炫酷纯CSS3纸飞机动画特效
  6. 怎么查询redis缓存的数据_阿里开发十年写出这份「Redis简明教程」+「Redis实战」请你查收...
  7. 哪一类功率放大电路效率最高_电路分析基础(8)-最大功率传输与阻抗匹配分析...
  8. ubuntu dpkg initramfs-tools错误的解决方法
  9. 开发日记-20190712 关键词 读书笔记 《Perl语言入门》Day 8
  10. Auto Encoder用于异常检测