我刚刚在akka中遇到了一段代码。
下面列出了我感兴趣的核心方法。
/**
* A very simple lock that uses CCAS (Compare Compare-And-Swap)
* Does not keep track of the owner and isn't Reentrant, so don't nest and try to stick to the if*-methods
*/
class SimpleLock {
val acquired = new AtomicBoolean(false)
def ifPossible(perform: () => Unit): Boolean = {
if (tryLock()) {
try {
perform
} finally {
unlock()
}
true
} else false
}
def tryLock() = {
if (acquired.get) false
else acquired.compareAndSet(false, true)
}
def tryUnlock() = {
acquired.compareAndSet(true, false)
}
有两个相关的子问题。
1)这个类SimpleLock的目的是什么
2)关于它如何工作的任何提示或背景知识?
我认为由于这段代码是用 JAVA 和 scala 编写的,因此它利用了 AtomicBoolean 类。所以我也会添加java标签。
欢迎任何建议!不知道为什么有人投票关闭这个问题。
有关的: