Java多线程join()
来源:互联网 发布:逆袭网络剧bilbil2集 编辑:程序博客网 时间:2024/06/07 18:40
原文出处http://www.cnblogs.com/skywang12345/p/3479275.html
join( )的作用:让“主线程”等待“子线程”结束之后才能继续运行。这句话可能有点晦涩,我们还是通过例子去理解
// 主线程public class Father extends Thread { public void run() { Son s = new Son(); s.start(); s.join(); ... }}// 子线程public class Son extends Thread { public void run() { ... }}
上面有两个类Father(主线程类)和Son(子线程类)。因为Son是在Father中创建并启动的,所以,Father是主线程类,Son是子线程类。
在Father主线程中,通过new Son()新建“子线程s”,接着通过s.start()启动“子线程s”,并且调用s.join().在调用s.join()之后,Father主线程会一直等待,知道“子线程s”运行完毕;在“子线程s”运行完毕之后,Father主线程才能接着运行。这也就是我们所说的“join()”的作用,是让主线程等待子线程结束之后才能继续运行!
join()示例
// JoinTest.java的源码public class JoinTest{ public static void main(String[] args){ try { ThreadA t1 = new ThreadA("t1"); // 新建“线程t1” t1.start(); // 启动“线程t1” t1.join(); // 将“线程t1”加入到“主线程main”中,并且“主线程main()会等待它的完成” System.out.printf("%s finish\n", Thread.currentThread().getName()); } catch (InterruptedException e) { e.printStackTrace(); } } static class ThreadA extends Thread{ public ThreadA(String name){ super(name); } public void run(){ System.out.printf("%s start\n", this.getName()); // 延时操作 for(int i=0; i <1000000; i++) ; System.out.printf("%s finish\n", this.getName()); } } }
t1 start
t1 finish
main finish
结果说明:
(1)在“主线程main”中通过 new ThreadA(“t1”)新建“线程t1”。接着通过t1.start()启动大概“线程t1”,并执行t1.join().
(2)执行t1.join()之后,“主线程main”会进入“阻塞状态”等待t1运行结束。“子线程t1”结束之后,会唤醒“主线程main”,“主线程”重新获取cpu执行权,继续运行。
阅读全文
0 0
- Java多线程 --- join
- java 多线程之join
- java多线程-join方法
- JAVA多线程之(join)
- java 多线程join
- java多线程join
- java多线程--join函数
- java多线程join()详解
- Java 多线程之join
- Java多线程join()
- java多线程之join
- Java 多线程:join
- java多线程之join
- java多线程之Join
- Java 多线程join方法
- Java多线程join()
- java多线程join方法
- java多线程join()和join(long millis)
- idea 中 java文件图标出现红色J
- Win10网络102错误代码该怎么办?360浏览器网络连接错误 错误代码 102的解决方法
- [swift] UIImage NSImage PNG透明区域填充自定义颜色实现
- 基于java的zabbix api调用实现数据共享
- 独家解密:为什么企业持续更新SEO软文却没有效果?
- Java多线程join()
- 唔..
- 时间减去n秒
- Python:关于三角矩阵
- FFmpeg源码剖析-框架:transcode()
- 1138: 【C语言训练】计算一个整数N的阶乘
- http调用打码兔 的文档
- android 相机 录像 声音去掉
- jQuery——入门(三)JQuery DOM操作(属性操作/样式操作/文档过滤)