У меня есть проблема в проекте, над которым я работаю:
У меня есть список элементов, отправленных через сервер, у меня есть локальная копия этого списка каждый раз, когда сервер вызывает метод обновления моего клиента.
Сам метод обновления проверяет, идентичен ли вновь отправленный список локальной копии, если нет, изменяет локальную копию. Это означает, что если на сервере элемент больше не присутствует, его следует удалить из локальной копии.
Проблема возникает, когда на сервере исчезает последний элемент: после этого сервер перестает вызывать метод обновления. Это означает, что локальная копия остается с одним элементом до тех пор, пока метод обновления не будет вызван снова, поскольку он вызывается только тогда, когда на сервере есть данные для отправки.
Теперь я не могу изменить архитектуру сервера или тот факт, что он не вызывает метод, когда список пуст. Я могу изменить только сторону клиента.
Я экспериментировал с потоками на моем клиенте, чтобы иметь какой-то поток, работающий параллельно, чтобы очистить список, если список не обновлялся какое-то время. Это не работает правильно или эффективно, и я, кажется, получаю случайные результаты, которые могут полностью измениться, просто изменив частоту выполнения потока.
Моя основная проблема возникает из-за того, что я не могу найти эффективный способ определить, активно я получаю данные или нет. Я также не могу найти способ проверить, заблокирован ли поток в данный момент или нет.
Любые идеи о том, как я могу подойти к этой проблеме? Я не очень хорошо разбираюсь в многопоточности и уже некоторое время бьюсь головой об стену.