在我的項目中,我使用Akka的演員。通過定義演員是線程安全的,這意味着,在演員的接收方法Akka的演員異步消息處理
def receive = {
case msg =>
// some logic here
}
一次僅一個線程處理的註釋一段代碼。然而,事情開始變得更加複雜時,這種代碼是異步的:
def receive = {
case msg =>
Future {
// some logic here
}
}
如果我理解這個正確的,在這種情況下,只有未來的結構將同步,可以這麼說,而不是內部邏輯未來。
當然,我可能會阻止未來:
def receive = {
case msg =>
val future = Future {
// some logic here
}
Await.result(future, 10.seconds)
}
解決了這個問題,但我認爲我們都應該同意,這是難以接受的解決方案。
所以這是我的問題:如何在異步計算的情況下保留演員的線程安全特性沒有阻止Scala的未來?
在http://docs.scala-lang.org/overviews/core/futures.html描述只需添加一個回調到未來。回叫應該向這個或另一個演員發送消息。 –