Привет, написал простую задачу производителя-потребителя, используя LinkedblockingQueue. Мой производитель записывает от 1 до 10 в очередь, а потребитель читает из очереди, используя цикл while внутри метода запуска как Ниже
while(true){
try {
System.out.println("Consumed: "+ sharedQueue.take());
} catch (InterruptedException ex) {
}
Согласно определению блокирующей очереди, блокирующая очередь блокируется, если в ней нет сообщений, и она ожидает, пока сообщение не будет помещено в очередь. Поскольку я использую цикл while, будет ли мой потребитель заблокирован на неопределенный срок?




Короткий ответ: да.
Длинный ответ: почему бы не попробовать запустить его и убедиться в этом?
Вы ответили на свой вопрос. Он блокируется до тех пор, пока сообщение не будет помещено в очередь.