当前位置: 首页 > 知识库问答 >
问题:

Java:线程是否以我的应用程序结尾[duplicate]

顾文昌
2023-03-14

假设您有一个应用程序A和一个线程类,如:

public class MyThread extends Thread {...}

从A开始,您可以从以下内容开始线程:

new MyThread.start();

那么当应用程序A完成时,MyThread是否也停止?否则,如何确保它会被中断?

共有2个答案

湛玄裳
2023-03-14

默认情况下,不会,JVM将继续运行,直到线程退出。你可以使用系统。退出以从任何线程或线程完全停止JVM。setDaemon(true)将线程标记为守护进程,这意味着它不会阻止JVM退出。

谢和颂
2023-03-14

有两种方式可以在Java中运行线程:

  • 作为普通应用程序线程
  • 作为“守护进程”线程

当JVM退出时,它会检查是否有任何非守护进程线程仍在运行,并等待这些线程退出。如果不希望JVM等待这些后台线程,请确保在线程上调用方法setDaemon(true)

有关更多详细信息,请查看另一个问题:

什么是Java中的守护进程线程?

另外,作为附带说明,现在在Java中运行线程的推荐方法是实现Runnable,而不是扩展thread。请参阅此处的更多详细信息。

在Java中“实现可运行”与“扩展线程”

 类似资料:
  • 问题内容: 我最近继承了一个小型Java程序,该程序从大型数据库中获取信息,进行一些处理并生成有关该信息的详细图像。原始作者使用单个线程编写了代码,然后对其进行了修改,以使其可以使用多个线程。 他在代码中定义了一个常量; 然后,它设置用于创建映像的线程数。 我理解他的理由,即线程数不能大于可用处理器的数目,因此将其设置为可以充分发挥处理器潜力的数量。这样对吗?还是有更好的方法来充分利用处理器的潜力

  • 问题内容: 我正在编写一个GUI应用程序,该应用程序通过Web连接定期检索数据。由于此检索需要一段时间,因此这会导致UI在检索过程中无响应(无法拆分成较小的部分)。这就是为什么我想将Web连接外包给一个单独的工作线程。 [是的,我知道,现在我有两个问题。] 无论如何,该应用程序使用PyQt4,所以我想知道更好的选择是:使用Qt的线程还是使用Python threading模块?各自的优点/缺点是什

  • 问题内容: Java中有关线程命名的最佳实践是什么?是否有任何遵循的命名约定? 问题答案: 我会说一般的最佳实践是“选择好名字”,这适用于变量,方法,计算机,甚至可能是孩子(请问我的儿子Gerund Extravagaza Smith)。 因此,是的,如果可能的话,为线程选择有意义的名称。 假设我们要求文件或计算机的命名约定。您希望有一个普遍适用的答案吗?我认为您需要生成自己的约定,该约定对您创建

  • 问题内容: 如何确保我的Java Servlet Web应用程序是线程安全的?关于会话变量,类的静态变量或其他可能导致线程安全的问题,我该怎么办? 问题答案: 事实:在webapp的生存期内只有一个servlet实例。它是在webapp启动时创建的,在webapp关闭时销毁的。另请参见此答案以进行粗略的解释。 因此,它已在所有请求(线程)之间共享。如果将请求或会话范围的数据分配为实例变量(或更糟的

  • 当我运行任何JavaFX代码(甚至是hello world http://docs.oracle.com/JavaFX/2/get_started/hello_world.htm)并按下capslock键时,应用程序将冻结,直到关闭caps lock为止。 我在Kubuntu12.04中运行JavaFX,可能是Kubuntu的bug,我没有机会在另一个操作系统上尝试。 知道吗?

  • 不是一个真正重要的问题,但只是好奇。您可以在运行时更改应用程序图标吗?例如,有一个按钮,当您按下该按钮时,您会在flutter中获得不同的应用程序图标(假设应用程序图标已经“设置”)。Android和iOS。 非常感谢任何意见。谢谢