`
men4661273
  • 浏览: 278214 次
  • 性别: 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()`方法是一个非常重要的同步工具,它允许一个线程(调用者)等待另一个线程(被调用者)执行完成。`Thread.join()`的使用能够有效地解决多线程环境中的顺序执行问题,确保线程间的...

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

    Java 中 Thread.join() 的使用方法 Thread.join() 是 Java 中的一个重要方法,该方法允许一个线程等待另一个线程的执行完成。下面我们将详细介绍 Thread.join() 的使用方法、源码分析和示例代码。 1. join() 的...

    Java线程(Java.Thread)(中英版)

    在Java中,线程是通过`java.lang.Thread`类或者实现`Runnable`接口来创建和管理的。这个资料包包含的是关于Java线程的中英文参考资料,包括书籍和源代码。 "Java.Threads,3rd.Edition.chm"可能是一个关于Java线程的...

    Java Thread Programming

    在Java中,可以通过两种方式创建线程:继承Thread类或实现Runnable接口。继承Thread类的方法直接扩展Thread类并重写run()方法,而实现Runnable接口则需要创建一个实现了Runnable接口的类,并在run()方法中定义线程的...

    Java中Runnable和Thread的区别

    在Java编程语言中,多线程的实现有多种方式,其中最常见的是通过继承`Thread`类和实现`Runnable`接口。这两种方法各有其特点和适用场景,理解它们之间的区别对于编写高效、可维护的多线程应用至关重要。 ### 继承...

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

    join()方法是Thread类中的一个实例方法,当一个线程A执行了threadB.join()操作时,线程A会等待线程B执行完成后才继续执行。这通常用于需要等待子线程完成之后才继续执行的情况。 以上就是对Java线程中wait、await、...

    java thread

    Java线程是Java SE(标准版)平台中的核心特性,它允许程序同时执行多个任务,提高了应用程序的效率和响应性。在多核处理器系统中,线程的优势更加明显,因为每个线程可以在不同的处理器上并发运行。本学习教程旨在...

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

    `join()`方法定义在`java.lang.Thread`类中,它使得多线程间的协作更加有序。 首先,我们来看`join()`的基本用法。在`Father`类(主线程类)中,创建了一个`Son`类(子线程类)的实例`s`,并调用`s.start()`启动子...

    java 携子之手 与子偕老(join)

    在实际应用中,join()方法通常配合Thread类的start()方法一起使用。start()方法用于启动新线程,而join()方法则用于确保当前线程等待该线程执行结束。例如: ```java Thread thread = new Thread(new Runnable() { ...

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

    static void ensure_join(JavaThread *thread) { // 处理join相关的销毁逻辑 } 可以看到,在线程结束时,Java虚拟机会执行exit方法,并在这个方法中调用ensure_join方法来处理join相关的销毁逻辑。ensure_join方法...

    java_Thread.rar_java thread runable_thread runable

    在Java中,有两种方式来创建和管理线程:通过继承`Thread`类和实现`Runnable`接口。 1. 继承`Thread`类: 当你需要一个具有自定义行为的线程时,可以创建一个新的类,该类继承自`Thread`。重写`Thread`类的`run()`...

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

    在Java多线程编程中,理解并正确使用`yield`和`join`方法是至关重要的。这两个方法都属于线程控制策略的一部分,但它们的作用和使用场景有所不同。 首先,我们来详细探讨`Thread.yield()`方法。这个方法的目的是让...

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

    `join()`方法定义在`java.lang.Thread`类中,其主要功能是使调用该方法的线程(这里称为调用线程)暂停执行,直到目标线程(即`join()`方法所在的线程)执行完毕。这样,可以确保调用线程在目标线程执行完成后才...

    java Thread

    在Java编程中,线程(Thread)是程序执行的最小单元,它与进程一起构成了操作系统的基础。Java提供了丰富的线程管理功能,使得开发者可以方便地进行多任务并行处理。本篇将深入探讨Java线程的核心概念、创建方式以及...

    java_Thread.rar_java 多线程_java多线程

    在Java中,通过实现Runnable接口或者继承Thread类可以创建并运行多线程。本资料"java_Thread.rar"提供了一些Java多线程的实践案例,对于深入理解和应用Java多线程技术具有很高的参考价值。 首先,我们要理解线程的...

    Java Thread Programming (Sams) java线程编程(含code)

    - 在Java中,线程通过实现`Runnable`接口或继承`Thread`类来创建。 2. **线程的创建与启动** - 实现`Runnable`接口:创建一个类实现`Runnable`,然后将其实例传递给`Thread`的构造函数。 - 继承`Thread`类:直接...

    java线程Thread的实例

    `Thread`类是Java中用于实现线程的基本接口,它位于`java.lang`包中。本实例将深入探讨`Thread`类的使用,这对于初学者掌握多线程编程至关重要。 在Java中,创建线程主要有两种方式:继承`Thread`类和实现`Runnable...

    详解Java中Thread 和Runnable区别

    Thread是Java中的一个类,而Runnable是一个接口。Thread类实现了Runnable接口,Runnable接口只有一个run()方法,完全是线程运行规范。 Thread类是Java中的一个类,它实现了Runnable接口。Thread类有一个start()...

    Java之Thread的join方法实例

    在Java多线程编程中,`Thread.join()`方法是一个非常重要的同步工具,它允许一个线程等待另一个线程结束执行后再继续执行。这个方法在处理并发控制和线程协作时非常有用,确保线程间的执行顺序。下面我们将深入探讨`...

Global site tag (gtag.js) - Google Analytics