假设我们有一个Akka演员,它根据a维持一个内部状态var.
class FooActor extends Actor {
private var state: Int = 0
def receive = { ... }
}
Run Code Online (Sandbox Code Playgroud)
假设接收处理程序调用一个返回未来的操作,我们使用调度程序将其映射为上下文执行程序,最后我们设置一个onSuccess改变actor状态的回调.
import context.dispatcher
def receive = {
case "Hello" => requestSomething() // asume Future[String]
.map(_.size)
.onSuccess { case i => state = i }
}
Run Code Online (Sandbox Code Playgroud)
从onSuccess回调中改变actor的状态是否是线程安全的,即使使用actor调度程序作为执行上下文?