【发布时间】:2020-01-31 04:42:16
【问题描述】:
有没有人知道实现锁的最佳方法是什么,以便在 X 秒后自动释放?
【问题讨论】:
-
这听起来是个坏主意。你想做什么?
-
我同意 SLaks - 等待 X 秒锁定是“不寻常的”。
-
理想情况下,我需要组合一个泛型类,该类将引发异常或在超时后自动清除锁定,即使用锁定类的方法出现问题
-
考虑到这一点,我认为您应该考虑单锁的替代设计。最好考虑一下可能“出错”的“事物的类型”是什么,并尝试编写一个解决方案,将问题分解为几个阶段,每个阶段之间都有可能恢复。 “锁”是为了保护数据不被多个线程同时访问——不要用这个提议的时间锁机制消除线程安全——找到其他方法。您不应该在“锁定”代码中让那个“出错”线程处于活动状态 - 找到某种方法来中止它?
-
作为一个用例,我需要能够锁定一个 Id 但不超过 5 秒,之后其他人才能获得锁定。由于我们持久性的性质(具有预期版本),如果两个不同的线程都进入锁定区域,则不会出现竞争条件问题,我只是想确保挂起的线程不会阻塞其他线程。