【问题标题】:How can we keep an java application running forever [closed]我们如何让 Java 应用程序永远运行 [关闭]
【发布时间】:2017-10-26 23:14:33
【问题描述】:

我想编写一个 java 应用程序,它应该永远运行。 Webservice 是一种方法,但我不想将它作为 Web 服务运行。 我只想在永远运行的应用程序中运行一些线程,我不想像这样处理任何 webRequest。

你能告诉我还有什么其他的方法吗?

【问题讨论】:

  • 运行它,不要停止它。为什么 Java 应用程序不能永远运行?
  • while (true) {} - 我猜不是你想要的
  • 或者如果你更喜欢 for 循环而不是 while 循环 for( ; ; ) { }
  • 不清楚你想达到什么,但也许有帮助:docs.oracle.com/javase/7/docs/api/java/util/concurrent/…

标签: java web-services microservices


【解决方案1】:

您可以让任何应用程序使用线程(最好通过线程池)永远运行,但您应该非常小心 GC。因此,您可能必须密切关注实例管理、定期堆转储和微调应用程序。希望对您有所帮助!

【讨论】:

    【解决方案2】:

    有一个类的 main 方法如下所示:

    final class Forever
    {
        private Forever ()
        {}
    
        public static void main (String [] args)
        {
            while (true)
            {
               try
               {
                   // don't do anything here
                   // especially do NOT connect to any databases
               }
               catch (Throwable t)
               {
    
               }    
            }
        }
    }
    

    将这个 java 代码放在一个运行 Linux 的太空探测器上,具有无限的能源。确保它远离行星、爆炸的恒星、黑洞等。

    注意:不要让人类连接到探头。

    这可能无法得到你想要的永远;但是,它可能会弥补到宇宙的尽头。

    更新: 到目前为止,我已经在我的开发环境中运行了大约 5 10 分钟,它仍在运行!我可能会尽快将此推送给 QA。

    【讨论】:

    • 基本上我想在持久队列上运行几个队列侦听器,并且这些侦听器应该永远运行。但是看到GC等问题,上面的方案似乎不太可行。
    • 你错了。不幸的是,给定足够的时间,但距离宇宙终结还有很长的路要走,根据这篇维基百科文章:en.wikipedia.org/wiki/…,探测器最终将通过量子隧穿和引力子发射到铁 56 原子核中衰变。在将事实发布到公共互联网之前,请先弄清楚事实。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-03
    • 1970-01-01
    • 2015-02-01
    • 2020-03-02
    • 1970-01-01
    • 2019-08-26
    相关资源
    最近更新 更多