akka-ReentrantGuard笔记
2014-10-02
akka2.3.6
在读akka源码时看到一种使用可重入锁的方式:ReentrantGuard,忍不住记在这里。因为传统try-finally的使用方式太反人类了!
final class ReentrantGuard extends ReentrantLock {
@inline
final def withGuard[T](body: ⇒ T): T = {
lock()
try body finally unlock()
}
}
ReentrantGuard实现代码就不用解释了。
如何使用看到这里也应该很清楚了:
private val lock = new ReentrantGuard
lock withGuard {
doSomething
}
这多自然!