主线程结束后,子线程也会跟着结束吗?

先说答案:不会

解释

不要被名字中的”父子“欺骗了!

在 Java 中,线程是独立的执行单元。主线程和子线程之间没有直接的父子关系。

问:

在主线程m 中创建了子线程c ,那么线程m 结束后,子线程c 也会结束吗

答:

主线程 m 的结束不会自动导致子线程 c 结束。子线程 c 会继续运行,直到它完成任务或主动终止。

  • 如果子线程 c 是 守护线程(Daemon Thread),那么当主线程 m 结束时,子线程 c 也会自动结束。
  • 守护线程是为其他线程提供服务的线程,当所有非守护线程(包括主线程)结束时,JVM 会自动退出,守护线程也会随之终止。
  • 如果子线程 c 是 非守护线程(User Thread),那么即使主线程 m 结束,子线程 c 也会继续运行,直到它完成任务或主动终止。

码先生
Author: 码先生

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注