如何在scala中使代码线程安全?

Kar*_*lek 4 scala

我有一个scala中的代码,由于各种原因,几行代码无法同时被更多线程访问.

如何轻松使其线程安全?我知道我可以使用Actors模型,但我觉得它对于几行代码来说太过分了.

我会使用某种锁,但我无法在谷歌或StackOverflow上找到任何具体的例子.

ten*_*shi 15

我认为最简单的解决方案是synchronized用于关键部分(就像在Java中一样).这是Scala的语法:

someObj.synchronized {
    // tread-safe part
}
Run Code Online (Sandbox Code Playgroud)

它易于使用,但它会阻塞并且很容易导致死锁,因此我建议您查看java.util.concurrentAkka,可能是更复杂但更好/无阻塞的解决方案.