gpt4 book ai didi

java - 保持 Java 程序无限期运行的有效方法?

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:26:06 26 4
gpt4 key购买 nike

我的程序在 main 中启动,并触发一些执行程序工作的线程(读取传感器、更新数据库、在屏幕上显示信息)。我希望程序无限期地运行。

在我的线程在 main 中启动后的那一刻,我只有:

public static void main(String []args)
{
//threads start here
while(true) {}
}

显然这可行,但我想知道它是否在浪费资源循环。

有没有一种有效的方法来保持程序运行。有没有优雅的退出方式?即在 main 中启动一个事件监听器来监听键盘或事件或其他东西?

我也试过这个,如果更好的话:

while(true) {
TimeUnit.HOURS.sleep(1);
}

编辑:关于线程的更多信息:

我不确定它们是什么类型的线程。我正在实现一个名为 gnu.io.SerialPortEventListener 的接口(interface),它启动并处理线程,因此它从我这里抽象出来。我将不得不查看 API,尽管我认为它没有很好的文档记录,或者查看我猜的源代码。它们使 JVM 在 IDE (blueJ) 中保持 Activity 状态,但当我在命令行上运行程序时却没有。我只是使用接口(interface)的方法将事件监听器添加到启动线程运行的 com 端口。

最佳答案

除非您的线程是 daemon threads 我不明白为什么您应该有一段时间或就此而言任何只会占用您的 CPU 的循环。除非所有非守护线程都完成,否则您的主线程不会被终止。此外,如果您希望进行清理,您可以注册 JVM 的关闭 Hook 。

关于java - 保持 Java 程序无限期运行的有效方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25096319/

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