У меня есть LockManager, который управляет замками нескольких потоков. Иногда потоки - плохие парни, и я должен их убить и попросить LockManager выпустить все свои блокировки. Однако, поскольку я использую ReentrantLock в java, это невозможно, я не могу разблокировать блокировку, принадлежащую другому потоку.Блокировка блокировки, принадлежащая другой теме java
Я вынужден использовать Замки (не могу использовать семафоры, это точка домашней работы). Есть ли какая-либо реализация Java Lock, которая позволяет мне разблокировать блокировки, принадлежащие другим потокам?
До сих пор варианты я Рассматриваемый:
- повторного внедрение ReentrantLock таким образом, что позволяет мне сделать это
- сделать какое-то отображение между семафорами и ReentrantLocks
Extra Источники, которые могут оказаться полезными:
- Reentrant locks - Unlocking from another thread
- Unlocking a lock from a thread which doesn't own it, or redesigning to avoid this?
Да, мне разрешено использовать мой собственный замок и спасибо! Я и сам на самом деле реализовали нашу собственную версию, которая имитирует интерфейс LOCK с помощью Семафоров. –
Я не вижу, как эта реализация wa kes, которые ждут предыдущего замка ... –
@GerardoLastra - * К сожалению, он все еще не имеет дело с замками, которые остаются болтающимися, но теперь это становится чьей-то проблемой. * – OldCurmudgeon