【发布时间】:2013-03-10 15:03:14
【问题描述】:
这个问题可能是一个非常新手的问题,但它让我很困惑。我正在研究 Java 网络,我对 main 方法的后端很好奇。
public static void main(String[] args) throws IOException
我知道main 启动一个线程?因此,即使我有一个简单的“Helloworld”程序,在您关闭整个 IDE 或系统之前,线程仍然保持活动状态?
这是否意味着我可以在 main 方法中包含任意代码,我也想永远运行这些代码(例如,心跳传感器检查或其他一些检查)。
谢谢
【问题讨论】:
-
除非非守护线程继续运行,否则 JVM 不会保持活动状态,除非编码器显式或隐式(例如运行 Swing GUI)创建一个或以某种方式创建一个保持主非守护线程处于活动状态(例如使用 while 循环)。
-
@HovercraftFullOfEels - 啊,我明白了。非常感谢!
-
但请再次记住,如果启动某些库,则可以创建并运行非守护线程,例如我上面提到的 Swing 库。我敢肯定还有其他这样的例子。
-
@HovercraftFullOfEels - 好酷 - 所以启动 Swing GUI 会创建一个非守护线程。我会好好研究这个的!谢谢!
-
非守护线程仅在您使 GUI 可见时才启动,并且必须注意仅在 Swing 事件线程上进行这些调用(通过
SwingUtilities.invokeLater(...))。如果您的主要目的不是创建 Swing GUI,那么我根本不会使用它。
标签: java multithreading main-method