首页 新闻 搜索 专区 学院

java并发编程中生产者消费者问题

0
悬赏园豆:100 [已关闭问题] 关闭于 2015-09-08 10:14
public synchronized void put(Product pro){
        while(index==p.length){
            try {wait();} catch (InterruptedException e) {}
        }
        notifyAll();
        p[index]=pro;
        index++;
    }

如上是Java并发编程中生产者的生产方法,如果notifyAll()叫醒本方的多个生产者,他们都满足循环条件,都往下执行吗?如果都往下执行那样不是相当与突破了synchronized,生产方法中又有多个生产者线程执行,导致了安全问题?

< >
分享
所有回答(1)
0

wait 是Object 类的方法,对此对象调用wait 方法导致本线程放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象发出notify 方法(或notifyAll)后本线程才进入对象锁定池准备获得对象锁进入运行状态,也就是全部唤醒以后也是jvm随机调度一个一个的执行。

东方不败java | 园豆:205 (菜鸟二级) | 2015-09-08 10:13
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册