gpt4 book ai didi

java - 主线程不调用 `join()` 等待创建的线程在 Java 中完成是否有用法?

转载 作者:太空宇宙 更新时间:2023-11-04 12:15:47 25 4
gpt4 key购买 nike

在 Java 中,主线程创建并启动另一个线程。如果主线程没有调用join()等待新线程结束,那么主线程退出后新线程会继续运行。主线程不调用join()有什么用法吗?

为了与 Linux 进行比较,我从 APUE 了解到,当一个程序 fork() 是一个子进程并且不调用 waitpid() 等待子进程时完成但在 child 继续运行时退出,我们可以

  • 将被init进程收养的子进程重新作为父进程(可以防止它变成僵尸进程),

  • 使子进程不是任何进程组或进程 session 的领导者,以便子进程可以调用 setsid() 与其控制终端解除关联(这可以使子进程成为守护进程过程)

上述两个好处不适用于 Java 线程是否正确?

谢谢。

最佳答案

任何 Java 应用程序在退出之前都隐式地加入所有非守护线程,因此本质上,主线程确实加入所有正在运行的线程。参见 here了解更多详情。

在 Java 中,进程/线程没有明确的需要拥有自己的/父线程。所有线程都只是启动并运行到完成或直到它们被中断。

不熟悉 Linux,但听起来你描述的 Linux 场景类似于 Java 中的守护线程机制。

关于java - 主线程不调用 `join()` 等待创建的线程在 Java 中完成是否有用法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47474303/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com