1

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

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

我还查看了这个列表:https ://stackoverflow.com/a/35521983/7091281 但是列出的那些似乎都不适合 - 我特别需要阻止线程,而我发现的一切都完全相反。

顺便说一句,系统的不同部分应该通过 RMI 进行通信。此外,虽然我们可以走自己的路,但鼓励使用线程而不是协程。(我们应该在 JAVA 中工作,但我们被允许使用 kotlin 和 scala)

4

1 回答 1

2

如果你想使用纯 Kotlin,你可以利用协程,更具体地说,它的Mutex用于锁定。

更多信息可以在 Kotlin 文档中找到,关于共享可变状态和并发

于 2020-09-30T16:56:28.620 回答