У меня есть сценарий использования, когда я заполняю свой blocking queue
большим количеством данных.
Теперь я хочу запустить событие (вызвать метод), когда эта очередь заполнится на 90% ( произвольное значение ).
Я хочу добиться этого, чтобы можно было выполнить операцию с массивными данными из очереди.
Для этого я подумываю о расширении одной из реализаций BlockingQueue
, такой как LinkedBlockingQueue
, и переопределении метода put(...)
и сделать что-то вроде:
...
@Override
public void put(E e) {
super.put(e);
if(this.percentageUsed() >= 90)
fireEvent(this);
}
...
И напишите мою логику, чтобы иметь дело с объектом BlockingQueue
в методе fireEvent
.
Это вполне можно сделать, используя планировщик для опроса размера очереди каждые n
seconds
, но если бы в моем приложении было много таких очередей, это создало бы хаос для обработки всех планировщиков. Кроме того, этот подход позволил бы хранить все в одном файле класса и иметь более чистый код.
Пожалуйста, предоставьте экспертную информацию об этом подходе.