我正在尝试找出如何在另一个线程释放锁之前正确等待的方法。
我认为代码会更好地解释我的意思:
myLock.lock();
sendSomewhereMyLock(myLock); //creates new threads inside
myLock.waitUntilReleasedByAnotherThread(60L, TimeUnit.SECONDS);
//do something after the lock is released
我认为我需要使用
tryLock(long time, TimeUnit unit)
方法,但Java文档表示该方法将立即执行,因为锁已由当前线程获取:如果锁可用,则此方法立即返回true。如果锁不可用,则当前线程变为禁用状态以进行线程调度,并休眠,直到以下三种情况之一发生:
- 当前线程获得该锁;或 - 其他某个线程中断当前线程,并支持中断锁获取;或 - 经过指定的等待时间
那么我应该使用什么?