admin管理员组

文章数量:1599529

public class ConditionDemoSignal implements Runnable{ 
	private Lock lock; 
	private Condition condition; 
	public ConditionDemoSignal(Lock lock, 
	Condition condition){ 
		this.lock=lock; 
		this.condition=condition; 
	} 
	@Override 
	public void run() { 
		System.out.println("begin -
		ConditionDemoSignal"); 
		try { 
			lock.lock(); 
			condition.signal(); 
			System.out.println("end - 
			ConditionDemoSignal"); 
		}finally { 
			lock.unlock(); 
		} 
	} 
}

通过这个案例简单实现了wait和notify的功能,当调用await方法后,当前线程会释放锁并等待,而其他线程调用condition对象的signal或者signalall方法通知并被阻塞的线程,然后自己执行unlock释放锁,被唤醒的线程获得之前的锁继续执行,最后释放锁。

所以,condition中两个最重要的方法,一个是await,一个是signal方法

await:把当前线程阻塞挂起

signal:唤醒阻塞的线程

 

本文标签: conditionConditionSignal