chocolateapple001 2017-07-05 02:27 采纳率: 0%
浏览 1107
已结题

关于Condition与线程绑定的问题

正在自学java,在多线程部分看到Lock与Condition部分的内容,有点不明白。

    Condition producer_con = lock.newCondition();
    Condition consumer_con = lock.newCondition();
    public void set(String name)
    {
        lock.lock();
        try
        {
            while(flag)  //若有烤鸭,就不生产
            try{producer_con.await();}catch(InterruptedException e){}
            this.name = name + count;
            count++;
            System.out.println(Thread.currentThread().getName()+"...生产者..."+this.name);
            flag = true;
            consumer_con.signal();
        }
        finally
        {lock.unlock();}
    }


我不明白,Condition对象与线程是怎么绑定的?难道是,某个线程是由哪个Condition对象调用await()阻塞的,就由哪个Condition对象唤醒?那么因为没有获取锁而自动阻塞的线程又怎么解释?

  • 写回答

4条回答 默认 最新

  • oyljerry 2017-07-05 06:00
    关注

    多个生产者线程都会使用同一个producer_con ,多个消费者线程都使用同一个consumer_con

    这样线程内部,就会根据await和signal来在线程之间同步

    评论

报告相同问题?

悬赏问题

  • ¥15 这个电路是如何实现路灯控制器的,原理是什么,怎么求解灯亮起后熄灭的时间如图?
  • ¥15 matlab数字图像处理频率域滤波
  • ¥15 在abaqus做了二维正交切削模型,给刀具添加了超声振动条件后输出切削力为什么比普通切削增大这么多
  • ¥15 ELGamal和paillier计算效率谁快?
  • ¥15 file converter 转换格式失败 报错 Error marking filters as finished,如何解决?
  • ¥15 Arcgis相交分析无法绘制一个或多个图形
  • ¥15 关于#r语言#的问题:差异分析前数据准备,报错Error in data[, sampleName1] : subscript out of bounds请问怎么解决呀以下是全部代码:
  • ¥15 seatunnel-web使用SQL组件时候后台报错,无法找到表格
  • ¥15 fpga自动售货机数码管(相关搜索:数字时钟)
  • ¥15 用前端向数据库插入数据,通过debug发现数据能走到后端,但是放行之后就会提示错误