线程的合并的含义就是将几个并行线程的线程合并为一个单线程执行,应用场景是当一个线程必须等待另一个线程执行完毕才能执行时可以使用join方法。
join为非静态方法,定义如下:
void join(): 等待该线程终止。
void join(long millis): 等待该线程终止的时间最长为 millis 毫秒。
void join(long millis, int nanos): 等待该线程终止的时间最长为 millis 毫秒 + nanos 纳秒。
测试代码:
public class ThreadJoinTest { public static void main(String[] args) { ThreadA ta = new ThreadA(); new ThreadB(ta).start(); } } class ThreadA extends Thread { public void run() { try { System.out.println("runing A start^^^^^^^^^^^"); Thread.currentThread().sleep(2000); System.out.println("runing A over^^^^^^^^^^^"); } catch (InterruptedException e) { e.printStackTrace(); } } } class ThreadB extends Thread { private ThreadA ta; public ThreadB(ThreadA ta) { this.ta = ta; } public void run() { try { System.out.println("runing B start^^^^^^^^^^^"); ta.start(); // 在ThreaB中调用ThreadA的join(),此时的ThreadB将挂起,直到ThreadA执行结束ThreadB才继续执行 ta.join(); System.out.println("runing B over^^^^^^^^^^^"); } catch (InterruptedException e) { e.printStackTrace(); } } }
仔细分析输出将一目了然:
runing B start^^^^^^^^^^^ runing A start^^^^^^^^^^^ runing A over^^^^^^^^^^^ runing B over^^^^^^^^^^^
相关推荐
在Java编程中,多线程是并发编程的重要组成部分,它允许程序同时执行多个任务,从而提高了系统的效率和响应性。然而,在某些场景下,我们可能需要控制线程的执行顺序,确保它们按照特定的顺序交替运行,这在并发编程...
在Java多线程编程中,有时我们需要确保所有子线程执行完毕后再进行后续操作,例如在并发测试、数据聚合或资源清理等场景。本篇文章将详细介绍五种在Java中等待所有子线程执行完的方法。 ### 方法一:使用`sleep`...
Java多线程-多功能演示系统,连接MySQL数据库利用多线程实现信息交流,为教师提供教学服务,便于教师整理教学资料,整合所需知识内容,更好的为学生提供生动形象的理解方式,加强教师与学生之间的互动沟通。
### Java多线程--让主线程等待所有子线程执行完毕 #### 核心知识点解析 在Java多线程环境中,让主线程等待所有子线程执行完毕是一个常见的需求,尤其是在处理大量数据或进行高性能计算时。这不仅有助于正确测量...
基于java的开发源码-java多线程反射泛型及正则表达式学习笔记和源码.zip 基于java的开发源码-java多线程反射泛型及正则表达式学习笔记和源码.zip 基于java的开发源码-java多线程反射泛型及正则表达式学习笔记和源码....
线程调度有两种主要策略:分时调度和抢占式调度。分时调度让所有线程轮流使用CPU,而抢占式调度则优先考虑高优先级的线程,当优先级相同时,随机选择一个执行。 多线程程序的优势在于: 1. 响应速度的提升,尤其...
Java线程:线程的调度-合并 Java线程:线程的调度-守护线程 Java线程:线程的同步-同步方法 Java线程:线程的同步-同步块 Java线程:并发协作-生产者消费者模型 Java线程:并发协作-死锁 Java线程:volatile关键字 ...
2. **线程调度策略**: - **分时调度**:所有线程轮流使用CPU的使用权,每个线程被分配相同的CPU时间片。 - **抢占式调度**:优先级高的线程以较大的概率优先获得CPU的使用权;如果线程优先级相同,则随机选择。...
多线程注意:wait()方法的调用要有判定条件常用 while () obj.wait(timeout, nanos); ... // Perform action appropriate to condition } synchronized会影响共享数据,但对其他语句的执行不会有规律了!
这篇学习笔记将深入探讨Java多线程的核心概念、实现方式以及相关工具的使用。 一、多线程基础 1. 线程与进程:在操作系统中,进程是资源分配的基本单位,而线程是程序执行的基本单位。每个进程至少有一个主线程,...
Java中的线程调度有两种策略:抢占式调度和合作式调度。Java采用抢占式调度,优先级高的线程更有可能获得CPU执行时间。 2. 获取和设置优先级 - `getPriority()`:返回线程的优先级,范围是1(MIN_PRIORITY)到10...
线程调度包括多种策略,如休眠(`sleep()`),通过指定时间使线程暂停;优先级(`setPriority()`),允许为线程设置优先级以影响调度;让步(`yield()`),让当前运行的线程暂停,给其他线程执行机会;合并(线程...
Java是世界上最流行的编程语言之一,尤其在企业级应用开发中占据主导地位。多线程是Java中的核心特性,它使得程序能够同时...多线程-join-daemon-同步.avi"的视频教程,你可以深入学习这些概念,并通过实例加深理解。
Java开发案例-springboot-61-整合asyncTool京东多线程编排工具-源代码+文档.rar Java开发案例-springboot-61-整合asyncTool京东多线程编排工具-源代码+文档.rar Java开发案例-springboot-61-整合asyncTool京东多线程...
4. **线程优先级与调度**:Java的`Thread`类提供了设置线程优先级的方法,如`setPriority(int priority)`,但实际线程调度依赖于操作系统的策略,优先级并不保证绝对的执行顺序。 5. **守护线程(Daemon)**:守护...
Java多线程与线程安全实践-基于Http协议的断点续传 Java多线程与线程安全实践-基于Http协议的断点续传 Java多线程与线程安全实践-基于Http协议的断点续传 Java多线程与线程安全实践-基于Http协议的断点...Java多线程与
在"java多线程编程实例_Source"这个压缩包中,你可能会找到以上各种概念的实例代码,通过学习这些代码,你可以更深入地理解Java多线程的实现和应用,提高自己的编程能力。记得实践是最好的老师,尝试运行和修改这些...
JAVA多线程与线程安全实践-基于Http协议的断点续传 JAVA多线程与线程安全实践-基于Http协议的断点续传 JAVA多线程与线程安全实践-基于Http协议的断点续传 JAVA多线程与线程安全实践-基于Http协议的断点续传 JAVA多...
Java多线程笔记是 Java 编程语言中关于多线程编程的笔记,涵盖了线程基础知识、线程优先级、线程状态、守护线程、构造线程、线程中断等多方面的内容。 获取简单 main 程序中的线程 在 Java 中,可以使用 ...