多线程:如何确保所有子线程执行完毕-join()方法

前言前面有写过关于一篇在多线程环境中如何确保所有子线程执行完毕的文章,当时写的是使用 CountDownLatch 计数器来实现。今天来纠正下这部分的内容:使用计数器只能确保所有的线程都开始被执行了,无法确保线程执行完毕。接下来我们来复现下这个问题。实现问题复现这里我们复现一下使用 CountDow
多线程 2025年12月04日 45次浏览

多线程:ExecutorService的submit()方法

前言之前我们介绍过在多线程的应用中确保所有任务执行完成的代码用法,我们使用 CountDownLatch 计数器来实现。本文我们将使用 ExecutorService 的 submit() 方法来实现。实现理论submit()和execute()先介绍下 ExecutorService 的 subm
Java 多线程 2025年08月04日 727次浏览

多线程:如何确保多线程中所有任务执行完成

背景在 多线程 的应用场景中,可能有些功能代码需要在所有任务执行完成后才可以继续执行,那么如何确保线程中所有任务都已执行完成了呢?如以下代码,Hello,World!在任务完成之前就输出了:import java.util.concurrent.*;/** * @author 郎家岭伯爵 */pub
Java 多线程 2023年02月15日 913次浏览

线程池创建多线程

背景使用线程池创建多线程。实现线程池创建方式创建线程池有两种方式:使用 Executors 创建;使用 ThreadPoolExecutor 创建。Executors 是对 ThreadPoolExecutor 进行了一层封装,因此使用起来会比较方便。但阿里的 Java开发手册 建议我们使用 Thr
Java 多线程 2023年02月13日 886次浏览

线程同步解决线程安全问题

背景多个线程操作同一资源时,会产生线程安全问题。实现synchronized与lock锁均可解决线程安全问题。问题复现代码package com.langjialing;public class ThreadSynchronized { public static void main(Stri
多线程 2022年05月10日 956次浏览

多线程的守护线程

背景多线程的守护线程。实现Thread的setDaemon方法可设置守护线程。注:默认线程均为用户线程,守护线程需要把setDaemon设置为true;虚拟机必须确保用户线程完成执行,而不用等待守护线程完成执行。守护线程应用场景:后台记录操作、监控内存、垃圾回收等待。代码package com.la
Java 多线程 2022年05月10日 930次浏览

多线程的线程优先级

背景多线程的线程优先级。实现Thread的setPriority方法可设置线程的优先级。代码注:setPriority()方法要先于start()方法执行,需要先设置线程的优先级才会生效;优先级高仅表示线程获得CPU调度的权重大,并不代表着一定会先于优先级低的线程执行。package com.lan
Java 多线程 2022年05月10日 1,011次浏览

多线程的线程强制插队执行-join

背景多线程的线程插队执行-join。实现join方法会强制让线程执行,并在线程执行结束后再开始执行其它线程。代码package com.langjialing;import java.awt.*;public class ThreadJoin implements Runnable{ @Ove
Java 多线程 2022年05月10日 901次浏览

多线程的线程礼让

背景多线程的线程礼让。实现注:礼让线程,让当前正在执行的线程暂停,但不阻塞;将线程从运行状态转为就绪状态;礼让的本质是让CPU重新调度,因此礼让的结果仍然是随机的。并不是把CPU的时间交付给另外的线程。代码package com.aac;//线程礼让//线程礼让不一定成功public class T
Java 多线程 2022年05月10日 915次浏览

多线程的线程中止

背景多线程的线程中止。实现多线程的线程中止不建议使用JDK提供的stop()、destory()等已废弃的方法,建议使用一个标识位来中止线程的执行。代码package com.aac;public class ThreadStop implements Runnable{ //1.定义线程体使
Java 多线程 2022年05月09日 894次浏览