Kotlin并发性:任何在Lock中运行代码的标准函数?
我一直在寻找一个函数,它需要一个Lock
types的对象,并运行一个代码块来处理锁定和解锁操作。
我会执行它如下:
fun T.runLocked(block: () -> Unit) { lock() try { block() } finally { unlock() } }
像这样使用:
val l = ReentrantLock() l.runLocked { println(l.isLocked) } println(l.isLocked) //true //false
任何可用的东西? 我只能find不能像这样使用的synchronized
函数。
您正在寻找withLock
,它具有您自己编写的确切实现 ,除了它具有块的结果而不是接收器types的通用参数。
您可以在kotlin.concurrent
包中find标准库的其他并发性相关方法。