Задержка события в программе Java - PullRequest
1 голос
/ 08 августа 2011

В моей Java-программе есть текстовый компонент, который может генерировать события в быстрой последовательности.Так как я делаю много фоновой обработки всякий раз, когда текст изменяется, это может заметно уменьшить отзывчивость текстового компонента.Вот почему я хотел бы ввести задержку: когда текстовый компонент начинает срабатывать, подключенный слушатель должен подождать некоторое время (например, 1 секунду), пока текстовый компонент не «успокоится», а затем начать собственную обработку.

Я знаю, что относительно просто запустить мой собственный простой механизм задержки, который делает то, что я хочу, но мне интересно, есть ли у пакета java.util.concurrent (или какого-либо другого системного пакета) готовое решение?за это.Я искал

Executors.newScheduledThreadPool(int)

, но это, похоже, не то, что я ищу, так как это вызовет все входящие события - я хочу только ровно одно событие, чтобы передать его слушателю после задержки.

Заранее спасибо.

1 Ответ

1 голос
/ 08 августа 2011

Вы очень близки к решению.

Вам нужно запланировать запуск слушателя на одну секунду в будущем, но отменить его, когда придет следующее событие (если оно не произошло).это уже случилось) и перенести.Использование исполнителя разумно, но главное, чтобы вы удерживали объект Future, который возвращает планирование, поскольку означает , который вы отменяете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...