加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

保持Java程序无限运行的方法是有效的吗?

发布时间:2020-12-15 04:21:36 所属栏目:Java 来源:网络整理
导读:我的程序从main开始,并启动一些执行程序工作的线程(读取传感器,更新数据库,向屏幕显示信息).我希望程序无限期运行. 在我的主要线程开始之后的那一刻,我只有: public static void main(String []args){ //threads start here while(true) {}} 显然这是有效的
我的程序从main开始,并启动一些执行程序工作的线程(读取传感器,更新数据库,向屏幕显示信息).我希望程序无限期运行.

在我的主要线程开始之后的那一刻,我只有:

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

显然这是有效的,但我想知道它是否浪费资源循环.

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

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

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

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

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

解决方法

除非你的线程是守护程序线程,否则我不明白为什么你应该有一段时间或者那个问题只会占用你的CPU.除非完成所有非守护程序线程,否则不会终止主线程.此外,如果您希望进行清理,可以注册JVM的关闭挂钩.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读