Kotlin并发性:任何在Lock中运行代码的标准函数?

我一直在寻找一个函数,它需要一个Locktypes的对象,并运行一个代码块来处理锁定和解锁操作。

我会执行它如下:

 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标准库的其他并发性相关方法。