2012-12-11 44 views
2

從未來(java.util.concurrent.Future)有什麼方法可以知道它的進程當前正在運行嗎?我試圖在一個Web應用程序中建立一個視圖,顯示某些過程的狀態,如果它完成或被取消,我只能從未來獲得。JAVA未來是否正在運行?

+1

'Future '是*接口* - 完全取決於實現該接口的是什麼 –

+0

是否可以編輯實現未來的類的代碼?因爲您可能會使用事件來了解未來何時開始運行。 – Zhedar

+0

我有這樣的想法,但我希望如果有一個更簡單的解決方案,因爲我有很多不同類型的過程,這將意味着創造大量的事件。 –

回答

2

這不是點的Future。問題是,這是一個承諾未來的結果,因此名稱。它不會保證它將如何或何時運行。它可以在當前線程,不同線程上運行,或者可能在不同的進程中運行。因此,它沒有任何超越現狀或缺席的狀態 - 這或多或少是整個觀點。如果要監視某個線程的進度,則必須在較低的抽象層工作。

+0

你說得對,我完成了添加一個帶有實例當前狀態的布爾值(isRunning) –

2

boolean isDone()怎麼樣?如果它仍在運行,它將返回false。 否則,您可以啓動一個調用get()並阻塞的線程,直到它完成。然後這個線程可以設置完成標誌。

+0

如果is尚未開始,它也會返回isDone()。 –

+0

如果在隊列 –

+0

中增加了另一種方法,它也返回「true」。如果我錯了,也應該阻止,如果它沒有開始,請更正。 – Zhedar