线程同步
时间:2010-12-04 来源:celvin
在使用Monitor类的Wait()方法时,释放对象上的锁病进入对象的等待队列。等待对象的下一个线程获得锁。如果余额为0,取款线程就会放弃控制权,并且让存款线程获得锁。
代码中调用了Monitor类的Pulse()方法,从而可以向等待线程发送信号,表明锁现在以及被释放,并且将要传递回等待线程。
未调用Pulse()方法前,可能出现的错:在对余额执行5次取款操作之后,balance变成0.在第六次执行取款时,取款线程保存的锁被释放给存款线程。存款线程对余额执行15次存款操作,然后程序冻结。结果是存款线程以及结束执行,但是取款线程仍然在等待显示返回的锁。
解决后:
相关阅读 更多 +