输出:
WorkerTwo:setp into critical section WorkerTwo:call sayHello() WorkerOne:step into critical section |
2、条件对象Condition,相当于wait-notify机制,提供一种线程间的等待通知机制,condition中的等待-通知方法是await(),signal(),signalAll(),也需要在互斥环境下被调用。
(1)相关的接口
创建Condition对象,Condition对象是跟Lock关联在一起的。
|
把此线程放到条件的等待集中。
void await(); |
解除此条件的等待集中所有线程的阻塞状态。
void signalAll(); |
在此条件的等待集中随机选择一个线程,解除其阻塞状态。
void signal(); |
(2)使用的基本结构:
|
|
ok_to_proceed也是为了防止wait-notify出现的问题,即再wait之间,notify()已经给出通知,此时wait只会一直等待下去,这样就保证了signal()线程的通知被await()线程接收到。