Сценарий использования очереди блокировки
Я работаю над проектом, в котором я обрабатываю все исключения, захваченные в блоках перехвата, для отправки на сервер с помощью вызова веб-службы.
Идея состоит в том, чтобы вообще не блокировать основное приложение при выполнении этой работы. Я чувствовал, что шаблон блокировки очереди подходит для этого. Итак, я создал блокирующую очередь, используя реализацию массива с размером 10. В начале основного приложения я инициализирую потребительский поток для этой очереди.
Однако сторона продюсера меня немного смущает. Насколько я понимаю, если очередь заполнена, и если основное приложение сработало в исключении, то выполнение в качестве источника.производителя (объекта) будет заблокировано, пока в очереди не будет места, и, следовательно, основное приложение также заблокируется. это правильное понимание?
2 ответа
Да вы правы. Вот очень полезная таблица методов BlockingQueue. Обычно хорошо иметь ограниченную очередь, но предел не должен быть очень низким.
Я думаю, вы должны записать свое исключение в память телефона (SharedPreferences, если Android) вместо хранения в основной памяти. Во-первых, оно не заблокирует ваше основное приложение.
А при перезвонке, подключенном к сети, запустите поток, который будет читать общие настройки и отправлять его на сервер.