一种有效的方法来锁定Kotlin中对特定资源的访问

问题描述

我们收到了一个任务,我们必须创建一个分布式文件系统。该文件系统应具有多个服务器,每个服务器执行特定功能

此问题与锁服务器有关,锁服务器用于防止两个人一次写入同一文件。每次访问文件的尝试都会生成一个线程,该线程完成后将提供对所请求文件的访问。如果访问了当前不是空闲的文件,则该线程应该被阻塞,直到释放锁为止。使用JAVA时,我可能只使用wait()和notify()方法,但是Kotlin中不存在这方法(我知道您可以通过强制转换来强制使用它们,但对此不予理))。有没有一种优雅的方法可以做到这一点?我们对可以使用的库没有限制,因此,如果您知道合适的库,我们将很乐意将其检查出来。现在,我认为最合适的是reentrantlock,但我正在寻找更多可能性。

我也签出了以下列表:https://stackoverflow.com/a/35521983/7091281 但是列出的所有线程似乎都不适合-我特别需要阻塞线程,而我发现的一切恰恰相反。

顺便说一句,系统的不同部分应该通过RMI进行通信。同样,尽管我们可以按照自己的方式行事,但还是鼓励使用线程代替协程。 (我们应该在JAVA中工作,但是我们被允许使用kotlin和scala)

解决方法

如果您想使用纯Kotlin,则可以利用协程,尤其是使用Mutex进行锁定。

可以在Kotlin文档中找到有关Shared Mutable State and Concurrency

的更多信息

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...