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)
}
関連するサブクエスチョンが 2 つあります。
1) このクラス SimpleLock の目的は何ですか
2) それがどのように機能するかについてのヒントや背景知識はありますか?
このコードは JAVA と scala の両方で記述されているため、AtomicBoolean クラスを利用していると思います。したがって、Javaタグも追加します。
どんなアドバイスでも大歓迎です!誰かがこの質問に投票する理由がわかりません。
関連している: