/**
* 取款
*
* @param x 操作金额
* @param name 操作人
*/
public void drawing(int x, String name) {
lock.lock(); //获取锁
try {
if (cash - x < 0) {
_draw.await(); //阻塞取款操作
} else {
cash -= x; //取款
System.out.println(name + "取款" + x + ",当前余额为" + cash);
}
_save.signalAll(); //唤醒所有存款操作
} catch (InterruptedException e) {
e.printStackTrace();
} finally {
lock.unlock(); //释放锁
}
}
}
Java线程:新特征-条件变量(5)
本文提供了一个使用锁和条件变量实现线程安全的取款操作示例。当账户余额不足以完成取款时,取款操作会被阻塞,直至存款操作增加余额。

被折叠的 条评论
为什么被折叠?



