2015-04-17 242 views
0

我正在使用不會在Platform.exit()上終止的javafx應用程序。通過試驗和錯誤,我已經漸漸成爲一種啓動兩個後臺任務的方法。但是這兩個任務(期貨)都取消了,並且在exit之前調用isDone阻止程序終止的線程

我已經有非常相同的代碼與揮杆工作正常。所以我不知道它是javafx的東西,還是我只是愚蠢的。

我已經使用了廣泛的搜索引擎,但沒有發現任何關於追蹤'永恆'線程的一般技巧。

+0

你是如何創建正在運行任務的線程的? –

+0

根據文檔,如果沒有更多的deamon線程,JVM將退出。你確定你沒有創建任何新線程嗎? – npinti

+0

沒有更多*非*守護進程線程;) –

回答

1

我通過ExecutorService的創建期貨::提交andScheduledExecutorService :: sceduleAtFixedRate默認ThreadFactory創建

線程都是非DEAMON,因此應用程序將運行至shutdown將被調用。要解決此問題,請將您的任務實施爲「可中斷」,並在執行程序上調用shutdownNow()或提供定製ThreadFactory,該程序將創建的deamon線程。這樣,執行程序線程將在主應用程序線程終止時終止。