我正在製作一個Chaos Monkey程序,我希望它在一段時間後自行清理。我想要一個簡單的方法來排列清理任務,以便在將來被稱爲一段時間。我想我可以和演員做一些事情並做很多手勢,但這似乎是錯誤的做法。在Scala標準庫中是否有更好的工具來完成這項任務?我應該如何在Scala中安排一些簡單的延遲任務?
回答
我已經在Scala上編寫了一個名爲foil的調度DSL,它可以在Github上免費獲得。它將與Java日曆/日期或Joda庫中的任一個一起使用。語法如下:
schedule(f) now
schedule(f) onceAfter 5.minutes
schedule(f) onceAt inst
schedule(f) onceAtNext time
schedule(f) todayNoEarlierThan time
其中f是閉包(即() => Unit
)。有更多的例子on the Wiki和example REPL session與箔,顯示如何使用它(與Java日期/日曆和JODA)。
看起來真棒,正是我需要的。由於我在這裏注意:如果我正在關閉程序,是否有某種方法可以停止計劃的任務?也許在關機之前立即運行它?此外,這有一種方法可以將抖動添加到我的日程安排中(「schedule(f)now,ThenEvery 2 to 100 minutes' or so)? – pr1001 2011-04-27 07:45:24
您可以添加一個* shutdown hook *,它是JDK('Runtime.addShutdownHook')的一部分,或者使用守護進程線程創建您的底層調度程序。對於你的最後一個問題,答案是「否」,因爲在「封面」下使用了「ScheduledExecutorService.scheduleAtFixedRate」。無論如何,這可以通過一個單獨的皮條客來添加,不過!讓我知道如果你是認真的使用這個,我會尋找添加代碼來鋁箔 – 2011-04-27 07:58:24
我想使用它,但坦率地說,所有的本地依賴和類似的事情變得很痛苦... – pr1001 2011-04-27 09:50:39
還有等多手揮手介入,reactWithin
加上TIMEOUT
消息會讓你這樣做。
您也可以使用Futures.alarm
創建一個可等待Future
,在指定的時間限制後解析。
這兩個聲音很有趣,不是我知道任何事情回來。可能你有一些鏈接來介紹他們?謝謝。 – pr1001 2011-04-26 23:59:53
斯卡拉多克對這些人來說相當不錯,但是剛讀過維基,我想你會比Chris的Foil庫好多了。 – 2011-04-27 07:50:38
- 1. 爲什麼在Verilog中延遲一些簡單的任務?
- 2. 我應該如何在django中安排我的任務
- 3. 在執行器服務延遲後安排任務
- 4. 我應該使用簡單的延遲還是指數回退
- 5. 在Acumatica中安排一些任務
- 6. 我應該如何延遲ajax請求?
- 7. 在Android中,我該如何延遲onSensorChanged?
- 8. 如何在Scala中的特定時間安排任務?
- 9. 如何指定一個延遲加載的集合應該在NHibernate中排序?
- 10. C++延遲任務
- 11. 循環延遲的任務
- 12. 我應該如何處理遊戲開發中的延遲?
- 13. 如何使用Celery延遲任務?
- 14. GAE任務隊列如何使延遲?
- 15. 爲什麼我無法使用調度程序安排固定延遲任務
- 16. 我該如何安排Wordpress中的任務每週運行一次
- 17. 我該如何延遲功能
- 18. Bukkit延遲任務在For Loop中
- 19. 簡單的並行任務及延續
- 20. 如何啓動MS TPL的任務類實例有一些延遲?
- 21. Rails Sidekiq延遲任務
- 22. 我應該如何建模這些簡單的金融交易?
- 23. 如何在Android中的多個任務之間加入延遲
- 24. 如何在C++中安排任務
- 25. 如何在Django中安排任務?
- 26. 如何在django中安排任務?
- 27. 如何在ASP.net中安排任務?
- 28. 取消.Net 4.0中的任務延遲
- 29. 我應該如何調整SQLite的最小延遲?
- 30. 我該如何安排一項任務在我的Tomcat服務器上每X小時運行一次?
相關http://stackoverflow.com/q/6227759/132374 – 2013-10-30 03:07:17