【发布时间】:2020-09-30 16:49:24
【问题描述】:
我们收到了一项任务,我们必须创建一个分布式文件系统。这个文件系统应该有多个服务器,每个服务器执行特定的功能。
这个问题与锁服务器有关,它用于防止两个人同时写入同一个文件。每次访问文件的尝试都会生成一个线程,该线程在完成后提供对所请求文件的访问。如果访问当前不空闲的文件,则线程应该被阻塞,直到锁被释放。对于 JAVA,我可能只使用 wait() 和 notify() 方法,但这些在 Kotlin 中不存在(我知道你可以通过强制转换来强制它们,但不赞成)。有没有一种优雅的方式来做到这一点?我们可以使用的库不受限制,因此,如果您知道适合的库,我将很乐意查看。目前我认为最适合的一个是ReentrantLock,但我正在寻找更多的可能性。
我也查看了这个列表:https://stackoverflow.com/a/35521983/7091281 但是列出的那些似乎都不合适 - 我特别需要阻止线程,而我发现的一切都完全相反。
顺便说一句,系统的不同部分应该通过 RMI 进行通信。此外,虽然我们可以走自己的路,但鼓励使用线程而不是协程。 (我们应该在 JAVA 中工作,但我们被允许使用 kotlin 和 scala)
【问题讨论】:
标签: kotlin locking rmi synchronous virtualfilesystem