mis*_*tor 6 java concurrency scala akka playframework-2.0
我们正在使用Scala,Play框架和MongoDB(使用ReactiveMongo作为我们的驱动程序)构建Web应用程序.应用程序架构是端到端的非阻塞.
在我们代码的某些部分,我们需要访问一些非线程安全的库,例如Scala的解析器组合器,Scala的反射等.我们目前正在用synchronized块封闭这些调用.我有两个问题:
synchronizedfuture-y代码时是否有任何需要注意的问题?ReentrantLock)而不是使用锁是否更好synchronized?这是一个老问题))在这里看到使用-actors-instead- for -synchronized作为例子.简而言之,使用actor而不是lock更合适:
class GreetingActor extends Actor with ActorLogging {
def receive = {
case Greeting(who) ? log.info("Hello " + who)
}
}
Run Code Online (Sandbox Code Playgroud)
在任何给定的时间只会处理一条消息,因此您可以放置任何非线程安全的代码而不是log.info,一切正常.BTW使用ask模式,您可以将您的演员无缝集成到需要未来的现有代码中.
| 归档时间: |
|
| 查看次数: |
2430 次 |
| 最近记录: |