java中wait方法使用实例_java中wait、notify和notifyAll的概念用法和例子?

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

新手不必过认真研究,我只列马克-to-win了一个国外的经典例子, 有兴趣的可研究这三个方法仅在synchronized 方法中才能被调用。 wait()方法告知被调用的线程退出监视器马克-to-win并进入等待状态,直到其他线程进入相同的监视器并调用 notify( ) 方法。

notify( ) 方法通知同一对象上第一个调用 wait( )线程。

notifyAll() 方法通知调用 wait() 的所有线程,具有最高优先级的线程将先运行。

例1.11.1-本章源码

class Box {

private int content = -9999;

private boolean available;

public synchronized int getContent() {

while (available == false) {// no content to get

try {

/*

当执行下面的wait,这个线程将会暂停在这,然后当下列setContent执行notify,然后这个线程将从这继续执行。

*/

wait();

} catch (InterruptedException e) {

}

}

available = false;

/*

以下notify的功能是,如果生产者睡眠短(不是当前的情况),在这种情况下,生产者睡眠更长,时间是1000,setContent的等待将被执行,那么这个通知将被执行,如果客户睡眠时间更短,则下面的notify是无用的,因为没有人等候,但语法上写上它没关系。

*/

notify();

return content;

}

public synchronized void setContent(int i) {

while (available == true) {// no room for another integer

try {

/*。。。。。。。。。。。。。。。。。详情请进:http://www.mark-to-win.com/JavaBeginner/JavaBeginner6_web.html#ConceptExampleOfwaitnotifynotifyAll

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值