浅解java 中thread.join()的用法
2016-02-27 14:29
375 查看
今天学习Thread.join() 有点疑惑 就上网搜了搜join的用法,发现第一页的答案基本上都是一个人写的 而且不是很直观,搞懂了之后我决定自己写篇关于
join()用法的文章
说白了就一句话 主线程run()方法中读到thread.join()时(程序中为a.join()),就暂定该主线程,调用子线程的run()方法直到结束,再后续执行主线程的run();
为了使结果更明了 ,在A的run方法中加入了TimeUnit.MILLISECONDS.sleep(1);
代码如下:
结果为:
B
B
A
A
A
B
B
如果 注释掉 B run方法中的
// try {
// a.join();
// } catch (InterruptedException e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
// }
结果为:
B
B
B
B
A
A
A
join()用法的文章
说白了就一句话 主线程run()方法中读到thread.join()时(程序中为a.join()),就暂定该主线程,调用子线程的run()方法直到结束,再后续执行主线程的run();
为了使结果更明了 ,在A的run方法中加入了TimeUnit.MILLISECONDS.sleep(1);
代码如下:
package Number_21; import java.util.concurrent.TimeUnit; /** * 加入一个线程 * * @author he */ class A extends Thread { int countdown = 4; A(String name) { super(name); start(); } @Override public void run() { while (--countdown > 0) { // 休眠 try { TimeUnit.MILLISECONDS.sleep(1); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } System.out.println("A"); } } } class B extends Thread { int countdown = 5; A a; B(String name, A a) { super(name); this.a = a; start(); } @Override public void run() { while (--countdown > 0) { if (countdown == 2) { // 读到thread.join()时会先暂停该线程,执行a的run()方法直到a的run()结束再执行b的run(); try { a.join(); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } System.out.println("B"); } } } public class P670 { public static void main(String[] args) { B b = new B("B1", new A("A1")); } }
结果为:
B
B
A
A
A
B
B
如果 注释掉 B run方法中的
// try {
// a.join();
// } catch (InterruptedException e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
// }
结果为:
B
B
B
B
A
A
A
相关文章推荐
- java内存溢出和内存泄露
- 关闭eclipse控制台自动弹出
- java,数组,一位数组
- eclipse中初探javadoc
- java设计模式--单例模式
- Java基础知识点4:继承
- JNI用javah命令生成头文件
- Java概述--Java开发实战经典
- Java&Xml教程(十一)JAXB实现XML与Java对象转换
- Java&Xml教程(十一)JAXB实现XML与Java对象转换
- Java&Xml教程(十一)JAXB实现XML与Java对象转换
- java-字符串学习总结
- javaWEB简单商城项目(四)
- Java的IO流
- springIOC
- spirngMVC+Hibernate+SpringSecuirty+Extjs一个简单的权限管理系统
- Java爬虫~~爬虫伪代码
- 一种C#生成符合Java规则的二进制文件方法
- Spring 4.2.4.RELEASE MVC 学习笔记 - 5 - Log4j(咋个办呢 zgbn)
- java高并发程序设计