阻止程序终止的线程
Threads preventing program termination
我正在开发不会在 Platform.exit()
终止的 javafx 应用程序。通过反复试验,我逐渐减少了一种启动两个后台任务的方法。但是两个任务(未来)都取消了,并且在调用 exit
之前 isDone
。
我有几乎相同的代码可以很好地与 swing 一起工作。所以我想知道它是javafx 'thing' 还是我只是愚蠢。
我在谷歌上进行了大量搜索,但没有找到任何关于追踪 'undying' 线程的一般技术。
I'm creating futures via ExecutorService::submit andScheduledExecutorService::sceduleAtFixedRate
默认创建的线程 ThreadFactory
是 NON DEAMON,因此应用程序将 运行 直到 shutdown
被调用。要解决此问题,请将您的任务实现为 "interruptable" 并在执行程序上调用 shutdownNow()
或提供自定义 ThreadFactory
以使用 Thread.setDeamon(true)
创建守护线程。这样,执行程序线程将在主应用程序线程终止时终止。
我正在开发不会在 Platform.exit()
终止的 javafx 应用程序。通过反复试验,我逐渐减少了一种启动两个后台任务的方法。但是两个任务(未来)都取消了,并且在调用 exit
之前 isDone
。
我有几乎相同的代码可以很好地与 swing 一起工作。所以我想知道它是javafx 'thing' 还是我只是愚蠢。
我在谷歌上进行了大量搜索,但没有找到任何关于追踪 'undying' 线程的一般技术。
I'm creating futures via ExecutorService::submit andScheduledExecutorService::sceduleAtFixedRate
默认创建的线程 ThreadFactory
是 NON DEAMON,因此应用程序将 运行 直到 shutdown
被调用。要解决此问题,请将您的任务实现为 "interruptable" 并在执行程序上调用 shutdownNow()
或提供自定义 ThreadFactory
以使用 Thread.setDeamon(true)
创建守护线程。这样,执行程序线程将在主应用程序线程终止时终止。