package com.cn.test.thread;

public class TestJoin extends Thread{

    private String name;
public TestJoin(String name) {
this.name = name;
} public static void main(String[] args) { TestJoin join1 = new TestJoin("thread-1");
TestJoin join2 = new TestJoin("thread-2");
join1.start();
join2.start(); try {
join1.join();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} System.out.println("main--------------------线程");
} @Override
public void run() { for (int i=0; i<3; i++) {
System.out.println(Thread.currentThread().getName() + "i=" + i) ;
}
} }

上述例子中: 在main方法中join1线程调用join方法,如果main方法抢到cpu的执行权,会将cpu的执行权让出来给join1线程,直到join1线程执行完毕之后才进行main线程的执行。join1和join2是同步进行竞争cpu的资源。

运行结果:

Thread-0i=0
Thread-1i=0
Thread-0i=1
Thread-1i=1
Thread-0i=2
Thread-1i=2
main--------------------线程 main线程需要等待join1线程执行完毕之后才能进行执行

 Thread的join方法在start方法之前进行执行,不会触发这种cpu让出执行权的操作,此时和mian线程是并发执行的。

package com.cn.test.thread;

public class TestJoin extends Thread{

	private String name;
public TestJoin(String name) {
this.name = name;
} public static void main(String[] args) { TestJoin join1 = new TestJoin("thread-1");
TestJoin join2 = new TestJoin("thread-2");
try {
join1.join();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
join1.start();
join2.start(); System.out.println("main--------------------线程");
} @Override
public void run() { for (int i=0; i<3; i++) {
System.out.println(Thread.currentThread().getName() + "i=" + i) ;
}
} }

  执行结果:

main--------------------线程
Thread-1i=0
Thread-1i=1
Thread-1i=2
Thread-0i=0
Thread-0i=1
Thread-0i=2

  总结:join方法可以控制多线程的执行顺序。

最新文章

  1. FTP Service mode : PORT &amp; PASV
  2. Django入门实践(3)
  3. SQLSERVER 复制同一张表的递归结构
  4. 2014 -&gt; 2015
  5. [整理]VS2013常用插件
  6. properties配置文件的读取和写入
  7. underscore.js依赖库函数分析一(遍历)
  8. XLConnect:一个用R处理Excel文件的高效平台
  9. U-boot的环境变量: bootcmd 和bootargs
  10. Oracle基础(九) Oracle的体系结构
  11. python备份脚本
  12. 在win8.1 64位环境下有关Oracle的安装和卸载
  13. 一些 CSS 框架
  14. 学习MVC框架之一
  15. POJ 2488 A Knight&#39;s Journey(DFS)
  16. C++ STL源代码学习之算法篇
  17. 一起talk C栗子吧(第一百二十六回:C语言实例--statickeyword)
  18. eclipse快速配置spring相关xml文件头信息
  19. 2000 ASCII码排序
  20. bzoj1047/luogu2216 理想的正方形 (单调队列)

热门文章

  1. 设置和获取html、文本和值
  2. [ 转 ] windows环境%变量%大全
  3. Squid代理服务器(四)——反向代理
  4. SQLServer XML
  5. luogu4074 [WC2013]糖果公园(树上带修莫队)
  6. thinkphp3.2----实现伪静态和路由配置
  7. git 克隆 提交本地修改到远程方法
  8. GitHub访问下载太慢解决办法
  9. Timer分析
  10. django笔记-model