Java Threads生产者消费者计划

时间:2016-08-07 14:58:30

标签: java multithreading thread-safety

我正在尝试用Java编写生产者消费者程序,生产者在队列中插入3个数字,消费者从队列中删除这些数字。我已根据自己的Linkedlist实现实现了自己的Queue。

当我运行我的代码时,我的生产者终止,但我的消费者永远不会终止。我无法弄清楚为什么

(100, 100)

1 个答案:

答案 0 :(得分:0)

您需要在消费者中为 while(true)循环添加停止条件,否则它将永远不会完成。您可以在 while 条件下执行此操作:

while(shouldConsume()) { 
    // consume ...
}

或者在达到条件时打破无限循环:

while(true) { 
    // consume ...

    if (shouldStopConsume()) {
        break;
    }
}

然后你必须使用适合你的用例的停止条件来实现这些方法。