双方
Lock并
synchronized允许一个线程等待的时候,另一个线程可以获得锁放弃锁。要停止等待,线程必须重新获取锁。
注意:它们没有完全释放它,并且如果您进行堆栈跟踪,则可能有多个线程似乎同时持有该锁,但其中最多一个线程将在运行(其余线程将被阻塞)
从Condition.await()
与此条件相关联的锁被原子释放,并且出于线程调度目的,当前线程被禁用,并且处于休眠状态,直到发生以下四种情况之一:
- 其他一些线程为此条件调用signal()方法,并且当前线程恰好被选择为要唤醒的线程;要么
- 其他一些线程为此条件调用signalAll()方法。要么
- 其他一些线程中断当前线程,并支持中断线程挂起;要么
- 发生“虚假唤醒”。
在所有情况下,在此方法可以返回之前,当前线程必须重新获取与此条件关联的锁。当线程返回时,可以保证保持此锁
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)