为什么在scala中可以锁定方法参数



我糊涂了。在Scala中,类似代码:

def remove(timerTaskEntry: TimerTaskEntry): Unit = {
synchronized {
timerTaskEntry.synchronized {
if (timerTaskEntry.list eq this) {
timerTaskEntry.next.prev = timerTaskEntry.prev
timerTaskEntry.prev.next = timerTaskEntry.next
timerTaskEntry.next = null
timerTaskEntry.prev = null
timerTaskEntry.list = null
taskCounter.decrementAndGet()
}
}
}
}

这两个synchronized是什么意思?为什么参数也可以被锁定?如何在Java中实现参数锁定?

这是Java(或一般的JVM)同步。

Scala中的something.synchronized { code }与Java中的synchronized(something) { code }含义相同。

另外,synchronized { code }this.synchronized { code }的简写,即Java中的synchronized(this) { code }

最新更新