我將scala.concurrent.ExecutionContext.Implicits.global
用於Future的所有執行者。但有時候,我做了一件簡單的事情,只是希望它不會改變線程(不把它放到線程池中),讓它在當前線程下繼續運行。使用twitter Future
其中有一個Future.value
來實現此目的。如何在Scala的未來做什麼?如何讓scala的Future在當前線程上運行?
1
A
回答
2
你可以這樣做:
Future.fromTry(Try { ... })
它不需要ExecutionContext
,基本上只是立即評估表達和包裝導致的未來。
其實,這裏是它的實現:
def fromTry[T](result: Try[T]): Future[T] = Promise.fromTry(result).future
因此,這似乎是Twitter的Future.value
的直接模擬。
如果您想創建已失敗的未來,請考慮使用Future.successful
如果您的代碼沒有出現任何異常或Future.failed
。
1
scala標準庫中twitter等的Future.value
等於Future.successful
。
Future.const
是Future.fromTry
Future.exception
是Future.failed
相關問題
- 1. 在Scala Future塊線程上等待嗎?
- 2. 如何在boost中找到當前正在運行的線程?
- 3. 如何停止當前線程以外的所有正在運行的線程?
- 4. 如何調試Scala Future?
- 5. 讓scala程序在eclipse中運行
- 6. scala actor攔截當前線程
- 7. 阻止當前線程,直到部分代碼在iOS主線程上運行
- 8. Scala Future with Option()
- 9. Scala Play Future Interdependancy
- 10. 主線程如何在此線程之前運行?
- 11. 讓線程在EDT的非EDT(事件調度線程)線程上運行
- 12. Python多線程:如何讓守護進程線程運行
- 13. 在運行時暫停當前進程中的所有線程
- 14. 如何讓當前線程等待函數在java中返回?
- 15. 如何在Ubuntu上運行Scala IDE?
- 16. 在當前正在運行的進程上執行操作
- 17. 如何檢查Java中當前正在運行的線程的數量?
- 18. 讓應用程序在前臺運行
- 19. 從ExecutorService獲取當前正在運行的線程對象
- 20. 如何讓一段代碼在單獨的線程中運行?
- 21. 如何讓Quartz.net作業在單線程的公寓中運行?
- 22. 讓Eigen運行在多線程中
- 23. 線程是否可運行?或上課?如何在後臺運行線程?
- 24. 在線程上運行NSTimer
- 25. 多核處理器上當前正在運行的線程是什麼?
- 26. 如何讓所有的類方法只在單線程上運行? (同步課?)
- 27. 一個Scala過程應該在Scala Future中標記爲scala.concurrent.blocking嗎?
- 28. 一步一步的指導讓Scala在.net上運行?
- 29. 如何讓這個程序在線性時間運行?
- 30. 如何在當前類的上下文中運行IRB.start
如果你做簡單的事情你不都需要一個未來。 –
@EndeNeu,簡單的事情只是作品的一個分支。我必須建立一個未來,以確保最終的結果是'未來'。 – LoranceChen
您可以執行'Future.successful'或'Future.failed'來獲取已完成的Future。 – Thilo