Как прервать BlockingQueue, который блокируется на взятии ()?

В соответствии со спецификацией , элемент . С атрибутом disabled вам не нужно указывать дополнительный CSS, чтобы отключить взаимодействие мыши с элементом.

Вот как это будет работать:

ACCEPTED


UNACCEPTED : selector also applying here

81
задан MCS 1 May 2009 в 17:24
поделиться

3 ответа

Если прерывание потока не является опцией, другим является помещение в очередь объекта «маркер» или «команда», который будет распознан как таковой MyObjHandler, и выйдет из цикла.

66
ответ дан 24 November 2019 в 09:42
поделиться

Прервать поток:

thread.interrupt()
1
ответ дан 24 November 2019 в 09:42
поделиться
BlockingQueue<MyObj> queue = new ArrayBlockingQueue<MyObj>(100);
MyObjectHandler handler = new MyObjectHandler(queue);
Thread thread = new Thread(handler);
thread.start();
for (Iterator<MyObj> i = getMyObjIterator(); i.hasNext(); ) {
  queue.put(i.next());
}
thread.interrupt();

However, if you do this, the thread might be interrupted while there are still items in the queue, waiting to be processed. You might want to consider using poll instead of take, which will allow the processing thread to timeout and terminate when it has waited for a while with no new input.

13
ответ дан 24 November 2019 в 09:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: