2015-04-17 195 views
0

我正在使用不会在Platform.exit()上终止的javafx应用程序。通过试验和错误,我已经渐渐成为一种启动两个后台任务的方法。但是这两个任务(期货)都取消了,并且在exit之前调用isDone阻止程序终止的线程

我已经有非常相同的代码与挥杆工作正常。所以我不知道它是javafx的东西,还是我只是愚蠢的。

我已经使用了广泛的搜索引擎,但没有发现任何关于追踪'永恒'线程的一般技巧。

+0

你是如何创建正在运行任务的线程的? –

+0

根据文档,如果没有更多的deamon线程,JVM将退出。你确定你没有创建任何新线程吗? – npinti

+0

没有更多*非*守护进程线程;) –

回答

1

我通过ExecutorService的创建期货::提交andScheduledExecutorService :: sceduleAtFixedRate默认ThreadFactory创建

线程都是非DEAMON,因此应用程序将运行至shutdown将被调用。要解决此问题,请将您的任务实施为“可中断”,并在执行程序上调用shutdownNow()或提供定制ThreadFactory,该程序将创建的deamon线程。这样,执行程序线程将在主应用程序线程终止时终止。