【问题标题】:How to check that main method has finished execution?如何检查 main 方法是否已完成执行?
【发布时间】:2014-03-04 08:03:26
【问题描述】:

我想参考这个问题[链接](How can child threads still executes even after if their parent thread dies or terminates?告诉我java代码来查看main方法是否已经完成执行。请不要告诉我这个使用守护进程线程,因为我不想使用守护线程。

【问题讨论】:

  • "告诉我java代码.." ?请告诉我你的代码。
  • 这是我的代码链接 [link] (stackoverflow.com/questions/22163922/…)。
  • @Ankit 否决某些问题并不能解决问题。
  • 如果您查看stackoverflow.com/questions/5642802/…,显然应用程序不会在主函数终止后终止。确保主线程是最后一个的方法是在主线程的所有其他线程上使用join()。这种方式 main 仅在所有其他线程完成后才完成。
  • JVM 中的线程之间没有父子关系。如果你想让你的 main 方法等待其他线程,你必须明确地编写代码。

标签: java multithreading


【解决方案1】:

告诉我java代码看看main方法已经执行完毕。

这个怎么样:

public static void main(String[] args) {
    // Do stuff ...
    System.err.println("The main method has finished");
}

如果这不是您想要的,您需要更清楚、更具体地提出问题。

【讨论】:

  • 这是我的代码链接 (stackoverflow.com/questions/22163922/…) 我想看看 main method() 什么时候死掉。
  • @TruePS - 这会告诉你。
  • @Stephen 所以你的意思是如果主方法()的父线程死亡,子线程仍然会继续运行。
  • @TruePS - 不,我没有暗示任何事情。我只是在回答你的问题。但是,您提出的是真实的陈述
  • 所以这句话是真的“如果父线程是 main method() 死了,子线程仍然继续运行”
【解决方案2】:

如果只是出于兴趣,请使用调试器查看程序的所有线程。

请不要混淆线程模型。您在另一个问题中提到的文章是关于C++ 的线程框架。在单个系统上,C/C++ 甚至存在不同的线程模型,因此请务必阅读您实际使用的模型。

【讨论】:

  • 我正在使用 Netbeans 能否请您告诉我如何使用调试器查看程序的所有线程。我从未这样做过。提前致谢。
  • 了解如何在调试模式下启动程序,然后学习设置断点
  • 设置断点 int main(),然后右键单击您的主类并选择“调试为 Java 应用程序”。然后,您可以通过选择“查看/调试/线程”打开线程视图。
猜你喜欢
  • 1970-01-01
  • 2022-01-02
  • 2011-02-15
  • 2017-11-13
  • 2014-07-22
  • 1970-01-01
  • 1970-01-01
  • 2015-08-14
  • 2014-10-25
相关资源
最近更新 更多