2016-03-12 6 views
0

Каков наилучший способ сигнализировать клиенту LinkedBlockingDeque о прекращении потребления?Каков наилучший способ сигнализировать клиенту LinkedBlockingDeque о прекращении потребления?

Служащий поток прекратит запись в Deque, но потребляющий поток будет блокироваться, если очередь пуста. Мне нужно сделать, чтобы потребительский поток взял все из очереди и закрыл. Прерывает ли хорошее решение?

ответ

1

Thread.interrupt(), как правило, не очень хорошая идея, так как это может привести к прерыванию работы, над которой работает нить.

Более надежный способ заключается в использовании специального сообщения, то есть отправки специального объекта, который будет интерпретироваться как сигнал, который должен быть завершен потребителем.

Или, скорее, рассмотрите возможность использования ExecutorService для этого и его shutdown method, который может легко выполнять работу и является стандартным решением для таких проблем.

 Смежные вопросы

  • Нет связанных вопросов^_^