`

java多线程里面的join()方法

 
阅读更多
//情况1 MainThread 在 NewThread.Join() 被调用后被阻塞,直到 NewThread 执行完毕才继续执行。
//情况2 如果join方法内有时间参数,经过试验可以得出,如果join(2000)方法里面加入了时间,比如2000,而对应的线程
//所要的时间是sleep(4000)4000毫秒,那么只是打断了2000毫秒后,join后面的代码会自动执行下去

public class ThreadJoinExample {
	public static void main(String[] args) {
		Thread t1 = new Thread(new MyRunnable(), "t1");
		Thread t2 = new Thread(new MyRunnable(), "t2");
		Thread t3 = new Thread(new MyRunnable(), "t3");
		t1.start();	
		try{
			System.out.println(Thread.currentThread().getName()+System.currentTimeMillis());
			t1.join(2000);
		}catch(InterruptedException e){
			e.printStackTrace();
		}
		System.out.println(Thread.currentThread().getName()+"t1是否在启动中" + t1.isAlive() +System.currentTimeMillis());
		System.out.println(Thread.currentThread().getName() +"t2是否在启动中" + t2.isAlive() +System.currentTimeMillis());
		t2.start();
		try{
			t2.join(2000);
			
		}catch(InterruptedException e){
			e.printStackTrace();
		}
		System.out.println(Thread.currentThread().getName() + "t2是否在启动中" + t2.isAlive() +System.currentTimeMillis());
		System.out.println("t1是否在启动中" + t1.isAlive());
		t3.start();
		try{
			System.out.println(Thread.currentThread().getName() + "t1是否在启动中" + t1.isAlive() +System.currentTimeMillis());
			System.out.println(Thread.currentThread().getName() + "t2是否在启动中" + t2.isAlive() +System.currentTimeMillis());
			t1.join();
			t2.join();
			t3.join();
		}catch (InterruptedException e){
			e.printStackTrace();
		}
		System.out.println("All threads are dead, exiting main thread");
	}

}
class MyRunnable implements Runnable{

	public void run() {
		System.out.println("thread start :::" + Thread.currentThread().getName());
		try{
			Thread.sleep(4000);
		} catch (InterruptedException e){
			e.printStackTrace();
		}
		System.out.println("Thread end :::" + Thread.currentThread().getName());
	}
	
}

 

分享到:
评论

相关推荐

    浅谈java多线程 join方法以及优先级方法

    下面小编就为大家带来一篇浅谈java多线程 join方法以及优先级方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    Java线程中wait,await,sleep,yield,join用法总结.pdf

    Java线程中wait、await、sleep、yield、join用法汇总,文章里面总结了这些关键字的用法,并且里面带有源码帮助分析用法,此一文就可以理解这些关键字用法,推荐拥有

    JAVA多线程编程详解-详细操作例子

    本压缩包,总共包含两个文档,JAVA多线程编程详解-详细操作例子和 Java多线 程编程总结 例如,runnable、thread、stop()、 suspend、yield、setPriority()、getPriority()、synchronized、wait()、join、线程池同步...

    Java学习源码Java多线程的代码

    在char01包里放置Java多线程基本知识的代码。内容如下: 如何使用多线程 如何得到多线程的一些信息 如何停止线程 如何暂停线程 线程的一些其他用法 在char02包里放置了Java对变量和对象并发访问的知识的代码...

    【IT十八掌徐培成】Java基础第08天-02.多线程-join-daemon-同步.zip

    【IT十八掌徐培成】Java基础第08天-02.多线程-join-daemon-同步.zip

    JAVA多线程之方法 JOIN详解及实例代码

    主要介绍了JAVA多线程之方法 JOIN详解及实例代码的相关资料,需要的朋友可以参考下

    Java多线程join方法实例代码

    主要介绍了Java多线程join方法实例代码,分享了相关代码示例,小编觉得还是挺不错的,具有一定借鉴价值,需要的朋友可以参考下

    个人总结的深入java多线程开发

    看完《think in java》多线程章节,自己写的多线程文档,还结合了其他的相关网络资料。 线程 一. 线程池 1)为什么要使用线程池 2 2)一个具有线程池的工作队列 3 3)使用线程池的风险: 4 4)有效使用线程池的原则 5...

    java基本教程之join方法详解 java多线程教程

    本文对java Thread中join()方法进行介绍,join()的作用是让“主线程”等待“子线程”结束之后才能继续运行,大家参考使用吧

    Java多线程教程吐血整理干货.md

    join方法 yield方法 多线程 进程和线程 进程与线程最主要的区别是它们是操作系统管理资源的不同方式的体现。 准确来说进程与线程属于衍生关系。 进程是操作系统执行程序的一次过程,在这个过程中可能会产生多个线程。...

    Java多线程中关于join方法的使用实例解析

    本文通过实例代码给大家实例介绍了Java多线程中关于join方法的使用,非常不错,具有参考借鉴价值,需要的朋友参考下

    多线程机制

    7、 浅析 Java Thread.join() : java多线程实现主线程等待所有子线程执行完毕 16 8、 线程运行中抛出异常的处理 19 9、 Callable 有返回值的线程 20 10、 Callable结合FutureTask的多线程使用(免打扰模式) 24

    Java线程中yield与join方法的区别

    长期以来,多线程问题颇为受到面试官的青睐。虽然我个人认为我们当中很少有人能真正获得机会开发复杂的多线程应用(在过去的七年中,我得到了一个机会),但是理解多线程对增加你的信心很有用。之前,我讨论了一个wait...

    java Fork Join框架及使用

    java Fork Join框架及使用,java自带的多线程框架,来处理多线程的问题

    Java实验指导书_多线程

    Java实验指导书_多线程 《Java语言程序设计基础教程》 上机实验指导手册 异常处理 【目的】 ①线程的创建和运行 ②Thread类的sleep、join等方法的使用 ③线程同步

    java多线程编程之join方法的使用示例

    join方法的功能就是使异步执行的线程变成同步执行。也就是说,当调用线程实例的start方法后,这个方法会立即返回,如果在调用start方法后后需要使用一个由这个线程计算得到的值,就必须使用join方法

    使用Java多线程实现下载多个文件.txt

    这段代码实现了一个下载器,可以同时下载多个文件。其中,构造函数MultiThreadDownloader接收一个URL数组和两个整数数组作为参数,分别表示每个URL的起始...最后,通过调用每个线程的join()方法等待所有线程执行完毕。

    多线程实验_1

    C#多线程实验,就AutoResetEvent,ManualResetEvent,Thread.join(),委托多线程回调。

    java多线程Thread的实现方法代码详解

    主要介绍了java多线程Thread的实现方法代码详解,涉及start(),run(),stop(),interrupt(),isInterrupted(),join()和join(long millis)等方法的介绍,具有一定借鉴价值,需要的朋友可以了解下。

    Java多线程详解

    文章目录1、进程与线程2、创建多线程2.1、继承Thread类2.2、实现Runnable接口2.3、使用匿名内部类实现2.4、实现Runnable接口的好处2.5、使用Callable和Future创建线程3、线程的生命周期4、几种特殊线程4.1、join线程...

Global site tag (gtag.js) - Google Analytics