【问题标题】:Whatefficient a simple way to lock access to specific resource in kotlin一种在 kotlin 中锁定对特定资源的访问的简单方法
【发布时间】: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


    【解决方案1】:

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

    更多信息可以在 Kotlin 文档中找到,关于 Shared Mutable State and Concurrency

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-24
      • 2017-10-10
      • 1970-01-01
      • 2022-06-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多