我糊涂了。在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 }
。