Thread 的join方法
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方法可以控制多线程的执行顺序。
Thread 的join方法的更多相关文章
- Thread线程join方法自我理解
		Thread线程join方法自我理解 thread.join():等待thread线程运行终止,指的是main-thread(main线程)必须等待thread线程运行结束,才能继续thread.jo ... 
- 浅析Thread的join() 方法
		Thread中的 join() 方法在实际开发过程中可能用的不是很多,但是在面试中作为考察基本功知识的扎实与否,经常会被用到.因此,对于 Thread 的 join() 方法进行了一定的研究. 常见的 ... 
- python thread的join方法解释
		python的Thread类中提供了join()方法,使得一个线程可以等待另一个线程执行结束后再继续运行.这个方法还可以设定一个timeout参数,避免无休止的等待.因为两个线程顺序完成,看起来象一个 ... 
- 8.Thread的join方法
		1.Thread类的join方法表示:当前线程执行结束再执行其它线程!在Thread类中有三个重载的方法分别是: public final synchronized void join(long mi ... 
- java线程基础巩固---分析Thread的join方法详细介绍,结合一个典型案例
		关于Thread中的join方法貌似在实际多线程编程当中没怎么用过,在当初学j2se的时候倒时去学习过它的用法,不过现在早已经忘得差不多啦,所以对它再复习复习下. 首先先观察下JDK对它的介绍: 其实 ... 
- Thread的join方法
		一个线程在执行的过程中,可能调用另一个线程,前者可以称为调用线程,后者成为被调用线程. Thread.Join方法的使用场景:调用线程挂起,等待被调用线程执行完毕后,继续执行. 如下案列: 当NewT ... 
- Thread中join()方法进行介绍
		http://www.cnblogs.com/skywang12345/p/3479275.html https://blog.csdn.net/dabing69221/article/details ... 
- 浅谈Java多线程中的join方法
		先上代码 新建一个Thread,代码如下: package com.thread.test; public class MyThread extends Thread { private String ... 
- Java多线程中的join方法
		新建一个Thread,代码如下: package com.thread.test; public class MyThread extends Thread { private String name ... 
随机推荐
- MySQL直接导出CSV文件,并解决中文乱码的问题
			需求: 需要导出hr_users 表中的部分字段的数据,以前是用PHP写脚本,然后导出CSV文件. 在MySQL中,它自己就能导出CSV文件 ,只不过是有如下几个问题需要大家解决. 1. 生成文件不成 ... 
- 案例3-ubuntu和centos中自动部署tomcat相关服务的脚本
			涉及redis,mysql,xtrabackup, tomcat 1. ubuntu中 #!/bin/bash #first, change to root #出错立刻中断 set -e apt-ge ... 
- centos 安装 Pip 的方法总结
			转自https://blog.csdn.net/u014236259/article/details/75212659 在我们安装Python后,如果未安装包管理工具pip,此时需要自己手动安装: 方 ... 
- Python多继承的C3算法
			C3算法 一.知识点补充: 拓扑排序:在图论中,拓扑排序(Topological Sorting) 是一个 有向无环图(DAG,Directed Acyclic Graph) 的所有顶点的线性序列.且 ... 
- nginx高性能WEB服务器系列之三版本升级
			nginx系列友情链接:nginx高性能WEB服务器系列之一简介及安装https://www.cnblogs.com/maxtgood/p/9597596.htmlnginx高性能WEB服务器系列之二 ... 
- 面试笔试(C++部分)
			1.define 和const,inline的区别 define的缺点: 1.边界效应(必须加括号,才能避免边界效应) #define MUL(A,B) A*B 而在使用的时候,这样的调用: ,b=, ... 
- 游戏1:HTML5制作网页游戏围住神经猫--createjs
			游戏简介:点击小圆圈,是蓝色的小圆圈不跑出圆圈外,跑出则结束游戏 准备工作: 下载easejs :下载地址:http://www.createjs.cc/easeljs 中文网站 效果: in ... 
- 动手玩转Docker(一)
			在学习docker之前,先了解一下什么是docker,以及docker技术存在的意义. Docker是PaaS供应商dotCloud开源的一个基于LXC 的高级容器引擎,源代码托管在 GitHub 上 ... 
- six
			团队序号:6组 团队名称:拯救地球小分队 团队项目的码云地址:https://gitee.com/lwj5950/seflash 此次博客撰写人姓名:刘威骏 学号:2017*****7168 团队中的 ... 
- Ant demo
			<?xml version="1.0" encoding="UTF-8"?> <!-- 定义一个工程,默认任务为warFile. --> ... 
