Несколько очередей блокировки, один потребитель

У меня есть несколько очередей BlockingQueue, содержащих сообщения для отправки. Возможно ли иметь меньше потребителей, чем очередей? Я не хочу зацикливаться на очередях и продолжать их опрашивать (занятое ожидание), и мне не нужен поток для каждой очереди. Вместо этого я хотел бы иметь один поток, который пробуждается, когда сообщение доступно в любой из очередей.

19
задан mindvirus 15 March 2012 в 02:02
поделиться

1 ответ

Полиморфизм

Это может быть решено с помощью полиморфизма, предположить, что у Вас есть два задания, названные JobOne и JobTwo, и Вы собираетесь использовать их потребителем. Необходимо определить интерфейс, названный заданиями как:

interface Jobs {
    ...
}

И затем можно реализовать Вас задания этим интерфейсом как:

class JobOne implements Job {
    ...
}

class JobTwo implements Job {
    ...
}

Теперь можно использовать Jobs, чтобы блокирующаяся очередь добавила два вида заданий для потребления.

BlockingQueue<Jobs> Jobs queue = new BlockingQueue<Jobs>();
0
ответ дан 30 November 2019 в 05:03
поделиться
Другие вопросы по тегам:

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