我有一个LockManager管理多个线程的锁。有时线程是坏男孩,我必须杀死它们并要求LockManager释放所有的锁。然而,因为我在java中使用ReentrantLock这是不可能的,我不能解锁另一个线程拥有的锁。解锁其他线程拥有的锁java
我被迫使用锁(不能使用信号灯,它是作业的一部分)。有没有任何Java Lock实现允许我解锁其他线程拥有的锁?
到目前为止,我认为有三种选择:
- 重新实施的方式,让我做这件事
- 使信号灯和ReentrantLocks
额外之间某种映射的ReentrantLock您可能会觉得有用的来源:
- Reentrant locks - Unlocking from another thread
- Unlocking a lock from a thread which doesn't own it, or redesigning to avoid this?
是的,我被允许使用我自己的锁。谢谢! 我的伙伴和我实际上实现了我们自己的版本,它使用Semaphores来模拟LOCK接口 – 2013-05-15 16:34:18
我看不到这个实现如何kes线正在等待上一个锁... – 2015-12-04 09:43:56
@GerardoLastra - *可悲的是它仍然不处理留下的悬挂锁,但现在成为别人的问题。* – OldCurmudgeon 2015-12-04 10:02:30