java - 如何在 Java 中创建允许主应用程序完全退出的后台线程?这适用于 Linux,但不适用于 Windows

标签 java multithreading process background runtime.exec

我有一个 Java 应用程序,它创建一个新线程来完成一些工作。我可以毫无问题地启动新线程。

当“主”程序终止时,我希望我创建的线程继续运行——它的确如此……

但问题是,当我从 Eclipse 或 Windows 下的 Ant 运行主应用程序时,控制不会返回,除非后台进程被终止。

如果我在 ant 中 fork 主 java 进程,我希望在主线程完成其工作后将控制权返回给 ant...但实际上,ant 会继续等待,直到主进程和创建的线程都终止了。

如何在后台启动线程,以便在“主”应用程序完成后控制权返回到 ant? (顺便说一下,当我在 Linux 下运行相同的应用程序时,我可以毫无问题地执行此操作)。

最佳答案

最好的办法是为此启动一个完全独立的程序,该程序独立于启动程序。你可以用 Runtime#exec() 做到这一点, ProcessBuilderDesktop#open() .

关于java - 如何在 Java 中创建允许主应用程序完全退出的后台线程?这适用于 Linux,但不适用于 Windows,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2641645/

相关文章:

java - 在 Java (Windows) 中杀死目录中的所有进程

c# - 线程敏捷性是否出现在 ASP.Net MVC 中?

process - 小口敏捷 : most bang for the buck

java - Spring @Component 未正确读取 .properties 字段

java - ByteBuddy - 读取 java 代理中的类注释

c++ - 我需要一个不会弄乱我打开的窗口的消息泵

ios - NSStream 关​​闭得太快

perl - 如果一个进程被 sigkill 杀死,我该如何让它再次运行?

java - 在关闭同一连接上的不同语句之前在连接上执行语句的行为是什么?

java - 在 Hibernate Java 中获取两个日期之间的用户数据