Приостановить TimerTask до следующего выполнения

Я использую TimerTask для запуска некоторых периодических задач, при этом задача обрабатывает набор файлов. У меня есть требование, согласно которому, если количество обрабатываемых файлов превышает заранее определенный предел, поток приостанавливает выполнение и ждет следующего цикла, чтобы снова начать обработку файлов. Есть ли способ приостановить TimerTask до следующего периода выполнения или мне нужно расширить класс TimerTask для достижения этой функциональности? Я видел, что есть метод TimerTask.cancel, но он отменит все дальнейшие выполнения этого потока. Я не хочу, чтобы это произошло. Я просто хочу, чтобы поток был приостановлен до следующего периода выполнения. У меня нет такой роскоши, как переход к каким-либо другим параллельным классам в Java, поскольку наш фреймворк использует TimerTask, и мне приходится придерживаться его.

Любые предложения, указатели или советы приветствуются.

Благодарность,

Аша


person Alice    schedule 17.11.2011    source источник


Ответы (1)


Один из подходов — поместить задачи в BlockingQueue и пусть TimerTask remove() и обрабатывают записи, пока очередь не опустеет или не будет достигнут заданный предел. Любые оставшиеся записи будут находиться в очереди в ожидании следующего запланированного выполнения.

person trashgod    schedule 18.11.2011
comment
Спасибо за предложение. Я использовал LinkedBlockingQueue для реализации этого, и это решило мою проблему. Спасибо, ценю это. - person Alice; 22.11.2011
comment
Отлично. Вы можете принять этот ответ, нажав на пустую галочку слева. - person trashgod; 22.11.2011