2013-08-18 33 views
1

我試圖以編程方式停止PlayFramework中正在運行的作業。當作業運行時,我保存它啓動時返回的'Promise'對象。這個對象有一個'取消'方法,應該取消一個預定的工作或停止一個現有的工作,但它似乎沒有做任何事情。以編程方式停止PlayFramework作業

還有什麼其他方式可以阻止正在運行的Job?

回答

1

我認爲你需要自己實施有序的取消。 cancel不會僅僅結束線程的執行,因爲這可能會導致不希望的結果。該解決方案與Thread.stop()不推薦使用,Thread.interrupt()應該使用相似。

檢查工作是否有時被取消。如果在循環中運行繁重的計算,請檢查它是否應該在開始時繼續運行。你甚至可以用這種方式返回部分結果。

+0

問題是PlayFramework中的'作業'本身不是一個線程,我需要從它正在運行的線程的外部中斷它。我不想實現'檢查它是否應該運行'模式類型,因爲如果它出於某種原因被卡在循環中,它可能不會退出。中斷異常會在那裏獲得更多的成功。 – Iv4n

+0

@ Iv4n你正在使用什麼工作和未來/承諾實現?對於java,scala,play1,play2和akka,有很多不同的東西。如果您使用的是Play 2.x版本,那麼如果您擔心陷入循環,應該有一些方法可以在超時運行期貨。 – Kapep

+0

我使用Play 1.x - 僅限Java。 – Iv4n

相關問題