请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

生产者模式

老师您好!请问:我这个生产者已经完成生产为什么程序没有结束。是不是消费者消费完了接着通知生产者生产了?但是这个生产者具体是在哪里卡着了呢?这个应该怎样修改。
public class BlockingQueueLYY {
public static void main(String[] args) throws InterruptedException {
ArrayBlockingQueue arrayBlockingQueue = new ArrayBlockingQueue(10);
Consumer consumer = new Consumer(arrayBlockingQueue);
Thread consumerT = new Thread(consumer);
Product product = new BlockingQueueLYY().new Product(arrayBlockingQueue,consumerT);
Thread productT = new Thread(product);

    productT.start();
    Thread.sleep(1000);
    consumerT.start();
}

 class Product implements Runnable{
    private BlockingQueue blockingQueue;
    Thread thread;
    public Product(BlockingQueue blockingQueue,Thread thread){
        this.blockingQueue = blockingQueue;
        this.thread = thread;
    }
    @Override
    public void run() {
        for (int i = 0; i < 100; i++) {
            try {
                blockingQueue.put(i);
                System.out.println(i+"被放进去了");
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
        System.out.println("生产完成");
        thread.interrupt();
    }
}
static class Consumer implements Runnable{
    private BlockingQueue blockingQueue;
    Consumer(BlockingQueue blockingQueue){
        this.blockingQueue = blockingQueue;
    }
    @Override
    public void run() {
        while (1==1){
            try {
                blockingQueue.take();
                System.out.println("消费了");
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}

}

正在回答

1回答

生产者结束了,但是消费者还在运行,卡在了

blockingQueue.take();


0 回复 有任何疑惑可以回复我~
  • 提问者 YXF_LYY #1
    非常感谢!
    回复 有任何疑惑可以回复我~ 2021-05-31 03:07:23
  • 提问者 YXF_LYY #2
    老师,blockingQueue.take();不是可以响应中断吗?System.out.println("生产完成");thread.interrupt();生产者完成之后我中断了消费者这样不可以吗?
    回复 有任何疑惑可以回复我~ 2021-05-31 03:44:22
  • 悟空 回复 提问者 YXF_LYY #3
    是可以的,但是你的代码里,消费者就算被中断了,也会被catch住,然后又while循环了。
    回复 有任何疑惑可以回复我~ 2021-05-31 10:03:54
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信