Я думаю, что, вероятно, есть название для того, что я здесь описываю, но я его не знаю. Итак, мой первый вопрос — узнать название этой техники.
Вот пример: предположим, вы реализуете поиск в реальном времени на веб-странице. Каждый раз, когда пользователь вводит текст в поле поиска, вы запускаете новый поисковый запрос, и результаты обновляются как можно чаще. Это глупо, потому что вы отправите гораздо больше запросов, чем вам действительно нужно. Отправка запроса один раз в 2-3 письма или максимум один раз в 100 мс, вероятно, достаточна.
Таким образом, метод заключается в том, чтобы запланировать выполнение запросов вскоре после ввода ключа, и если все еще есть запланированные, но не выполненные запросы, отменить их, поскольку они устарели.
Теперь, более конкретно, существуют ли конкретные шаблоны или библиотеки для решения этой проблемы в Java?
Мне пришлось решить проблему в приложении Swing, и я использовал ExecutorService, который возвращал ScheduledFuture, которые я мог отменить. Проблема в том, что мне приходилось вручную создавать Runnable для каждого вызова метода, который я хотел «буферизировать», и отслеживать каждое будущее, чтобы отменить его.
Я уверен, что я не первый, кто реализовал что-то подобное, поэтому где-то должно быть многоразовое решение? Возможно что-то в Spring с аннотациями и прокси?