如何在scala中创建同步对象方法

jav*_*dba 7 synchronization scala

scala是否支持同步对象(/ static)方法?我在寻找:

synchronized def myObjectMethod(): <SomeReturnType> = {
.. 
 }
Run Code Online (Sandbox Code Playgroud)

如果不支持,scala中的等价物是什么?

Gab*_*lla 26

synchronized在scala中只是一种方法1.所以你可以做到

def myObjectMethod: SomeReturnType = synchronized {
  // stuff
}
Run Code Online (Sandbox Code Playgroud)

它实际上是编译器注入的一种特殊方法,更多细节如下:AnyRef上的synchronized方法是如何实现的?

  • 不同步`同步`与`this`同步?所以如果我有`def foo = synchronized {/*stuff*/}; def bar = synchronized {/*其他东西*/}`,我能同时运行两个(即`foo`和`bar`可以同时运行,但每个副本最多一个) (5认同)