我正在研究javafx应用程序,它不会在Platform.exit()
上终止。通过反复试验,我逐渐减少了一个启动两个后台任务的方法。但是两个任务(期货)都被取消,并且在isDone
之前调用exit
。
我有几乎相同的代码与swing工作正常。所以我想知道这是javafx'的事情'还是我只是愚蠢。
我已经广泛搜索了广告,但没有发现任何关于追踪'不朽'线程的一般技术。
答案 0 :(得分:1)
我正在通过ExecutorService创建期货:: submit andScheduledExecutorService :: sceduleAtFixedRate
默认情况下创建的线程ThreadFactory
是NON DEAMON,因此应用程序将一直运行,直到调用shutdown
为止。要解决此问题,请将您的任务实现为“可中断”并在执行程序上调用shutdownNow()
或提供将使用ThreadFactory
创建deamon线程的自定义Thread.setDeamon(true)
。这样,执行程序线程将在主应用程序线程终止时终止。