`
men4661273
  • 浏览: 275631 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java中的Thread类的join

阅读更多
join是Thread的实例方法,官方解释为:等待该线程终止。
其作用就是将调用join的线程优先执行,当前正在执行的线程阻塞,直到调用join方法的线程执行完毕或者被打断,主要用于线程之间的交互。
还有两个重载的方法:
1、join(long millis),等待该线程终止的时间最长为 millis 毫秒。为 0 意味着要一直等下去。
2、join(long millis, int nanos),等待该线程终止的时间最长为 millis 毫秒 + nanos 纳秒。
下面以几个例子说明:
例1:
System.out.println("主线程开始.");
TaskD taskD = new TaskD();
taskD.start();
try {
	hread.sleep(2000);
	System.out.println("taskD join,主线程等待.");
	/*
	* 此处如果taskD没有join,那么主线程会优先执行完毕,taskD在未执行完毕时中断。
	* join之后,主线程等待线程taskD执行完毕再执行
	*/
	taskD.join();
} catch (InterruptedException e) {
	e.printStackTrace();
}
System.out.println("主线程结束.");
 

 
例2:
System.out.println("主线程开始.");
TaskD taskD = new TaskD();
TaskE taskE = new TaskE(taskD);
try {
	taskD.start();
	Thread.sleep(2000);
	taskE.start();
	/*
	* 此处taskE join,主线程等待,
	 * 在taskE执行时,taskD join,所以 最有的执行优先级时taskD,taskE,主线程
	*/
	taskE.join();
} catch (InterruptedException e) {
	e.printStackTrace();
}
System.out.println("主线程结束.");
例3:
System.out.println("主线程开始.");
		TaskD taskD = new TaskD();
		TaskE taskE = new TaskE(taskD);
		try {
			taskD.start();
			Thread.sleep(2000);
			taskE.start();
			/*
			 * 此处taskE不进行 join,主线程不等待,
			 * 在taskE执行时,taskD join, taskE等待taskD执行完毕再执行
			 * 但由于主线程没有阻塞,优先taskD和taskE执行完毕,所以taskD和taskE被中断。
			 */
			//System.out.println("taskE join,主线程等待.");
			//taskE.join();
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
		System.out.println("主线程结束.");
 
  • 大小: 4.6 KB
  • 大小: 6.2 KB
  • 大小: 4 KB
分享到:
评论

相关推荐

    java 中Thread.join()的使用方法

    主要介绍了java 中Thread.join()的使用方法的相关资料,需要的朋友可以参考下

    Java中Thread.join()的使用方法

    主要介绍了Java中Thread.join()的使用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

    Java线程之join_动力节点Java学院整理

    join() 定义在Thread.java中。 join() 的作用:让“主线程”等待“子线程”结束之后才能继续运行。这句话可能有点晦涩,我们还是通过例子去理解

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

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

    Java之Thread的join方法实例

    主要介绍了Java之Thread的join方法,实例形式讲述了join方法的应用,需要的朋友可以参考下

    Java开发技术大全(500个源代码).

    invokeMethod.java 同一个类中调用方法示例 invokeOther.java 类的外部调用方法示例 invokeStaticMethod.java 调用静态方法示例 localVariable.java 演示局部变量 localVSmember.java 局部变量与成员变量同名...

    浅谈Java线程Thread.join方法解析

    本篇文章主要介绍了浅谈Java线程Thread.join方法解析,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    JAVA CountDownLatch与thread-join()的区别解析

    主要介绍了JAVA CountDownLatch与thread-join()的区别解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

    线程的基本概念、线程类、任务类、线程优先级、sleep()方法、yield()方法、join方法、interrupt()方法

    线程的基本概念、线程类...在Java中,可以使用Thread类的join()方法实现线程的合并。 线程的中断是指在一个线程中断另一个线程的执行。在Java中,可以使用Thread类的interrupt()方法实现线程的中断。(run方法执行完毕)

    java高并发相关知识点.docx

    线程:Java多线程的实现方式,包括继承Thread类和实现Runnable接口。 锁:Java中的锁机制,包括synchronized关键字和ReentrantLock类。 线程池:Java中的线程池机制,包括线程池的创建、执行任务、关闭等操作。 并发...

    Java 7并发编程实战手册

    《Java 7并发编程实战手册》是Java 7并发编程的实战指南,介绍了Java 7并发API中大部分重要而有用的机制。全书分为9章,涵盖了线程管理、线程同步、线程执行器、Fork/Join框架、并发集合、定制并发类、测试并发应用...

    JAVA基础课程讲义

    Java中IO流类的体系 149 四个IO基本抽象类 150 InputStream 150 OutputStream 150 常用InputStream和OutputStream子类用法 150 FileInputStream和FileOutputStream 150 ByteArrayInutStream和ByteArrayOutputStream ...

    Java 7 Concurrency Cookbook

    Chapter 5, Fork/Join Framework will teach the readers to use the new Java 7 Fork/Join framework. It’s a special kind of executor oriented to execute tasks that will be divided into smaller ones using...

    Java.Threads.and.the.Concurrency.Utilities.1484216997

    This concise book empowers all Java developers to master the complexity of the Java thread APIs and concurrency utilities. This knowledge aids the Java developer in writing correct and complex ...

    疯狂JAVA讲义

    学生提问:既然内部类是外部类的成员,是否可以为外部类定义子类,在子类中再定义一个内部类来重写其父类中的内部类? 211 6.7.4 局部内部类 211 6.7.5 匿名内部类 212 6.7.6 闭包(Closure)和回调 215 6.8 ...

    Java Language Features 2nd Edition

    The chapter on threads follows this up and discusses everything from the very basic concepts of a thread to the most advanced topics such as synchronizers, the fork/join framework, and atomic ...

    Java 9 Concurrency Cookbook - Second Edition

    Java 9 Concurrency Cookbook - Second Edition by Javier Fernandez Gonzalez English | 25 Apr. 2017 | ASIN: B01KOG6V5M | 594 Pages | AZW3 | 4.11 MB Key Features Get detailed coverage of important ...

    21天学通Java-由浅入深

    240 12.2.1 创建局部内部类 240 12.2.2 在局部内部类中访问外部类成员变量 240 12.2.3 在局部内部类中访问外部类的局部变量 241 12.2.4 静态方法中的局部内部类 243 12.3 静态内部类 244 12.3.1 创建静态内部类 244 ...

    什么是线程?Java中如何创建和管理线程?(java面试题附答案).txt

    通过将 MyRunnable 对象传递给 Thread 类的构造方法,我们创建了一个新的线程,并将 run 方法作为线程的执行逻辑。 除了基本的线程创建和启动,Java还提供了一些管理线程的方法和工具,例如: sleep 方法:使当前...

Global site tag (gtag.js) - Google Analytics