Java 等待多个子线程 join
2016-02-19 17:30
387 查看
thread.Join把指定的线程加入到当前线程,可以将两个交替执行的线程合并为顺序执行的线程。比如在线程B中调用了线程A的Join()方法,直到线程A执行完毕后,才会继续执行线程B。
t.join(); //使调用线程 t 在此之前执行完毕。
t.join(1000); //等待 t 线程,等待时间是1000毫秒
要想主线程main等待若干线程结束之后再执行,需要先调用各个子线程的start()方法,在所有线程的start()方法执行完之后,再执行所有子线程的join()方法。若依次执行每个线程的start()和join()方法,则各个线程之间是同步的。举例如下:
参考:
http://uule.iteye.com/blog/1101994
/article/1557571.html
t.join(); //使调用线程 t 在此之前执行完毕。
t.join(1000); //等待 t 线程,等待时间是1000毫秒
要想主线程main等待若干线程结束之后再执行,需要先调用各个子线程的start()方法,在所有线程的start()方法执行完之后,再执行所有子线程的join()方法。若依次执行每个线程的start()和join()方法,则各个线程之间是同步的。举例如下:
public class Test { public static void main(String[] args) { Thread cpuThread = new Thread(new Runnable(){ //线程1,去获取cpu利用率 @Override public void run() { try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("1 over"); } }); Thread memThread = new Thread(new Runnable(){ //线程2,去获取mem利用率 @Override public void run() { try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("2 over"); } }); Thread netThread = new Thread(new Runnable(){ //线程3,去获取net利用率 @Override public void run() { try { Thread.sleep(2000); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("3 over"); } }); try { cpuThread.start(); memThread.start(); netThread.start(); cpuThread.join(); memThread.join(); netThread.join(); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("都结束了"); } }
参考:
http://uule.iteye.com/blog/1101994
/article/1557571.html
相关文章推荐
- java 遍历某月的所有日期
- CXF spring jaxws:endpoint jaxws:server 区别 与 关系
- 如何在Eclipse下安装myeclipse插件
- 解析Java的迭代器中的fast-fail错误检测机制
- Eclipse不能自动联想类成员的解决方法之一
- 面向对象01-java基础
- 享元模式(Flyweight)
- Java代码中的特殊注释
- java解析xml 之SAX 解析方式原理
- C#和Java时间字符串的毫秒字符不同
- 我爱学Java之枚举
- 【JAVA】 基础练习 BASIC-12 十六进制转八进制
- jvm学习笔记一(java内存区域)
- spring 事务配置注解(自己随便写写)
- Myeclipse添加struts2支持后取消操作
- 金子也要很努力才能发光,何况是顽石
- 【慕课笔记】第一章 异常与异常处理 第4节 JAVA中的异常抛出以及自定义异常
- 图解Java单例模式内存分配
- SpringMVC入门
- java 基本数据类型