У меня есть приложение, которое проверяет ресурс в Интернете на наличие новых писем.Если есть новые письма, они обрабатывают их.Это означает, что в зависимости от количества писем, это может занять несколько часов или часов обработки.
Теперь объект / программа, которая выполняет обработку, уже является одиночным.Так что сейчас я уже позаботился о том, чтобы на самом деле был только 1 экземпляр, который обрабатывает проверку и обработку.
Однако у меня он запущен только один раз, и я хотел бы, чтобы он работал постоянно, проверяя новые письма.более или менее каждые 10 минут или около того, чтобы справиться с ними своевременно.
Я понимаю, что могу позаботиться об этом с помощью Timer / Timertask или, что еще лучше, я нашел ресурс здесь: http://www.ibm.com/developerworks/java/library/j-schedule/index.html, который использует Scheduler / SchedulerTask.Но я боюсь, что если я настрою его запуск каждые 10 минут, а предыдущий сеанс уже обрабатывает данные, он поместит новую задачу в стек, ожидая выполнения после завершения предыдущей.Так что я боюсь, например, что первый запуск выполняется в течение 5 часов, а затем, потому что он был все время занят, после этого он запустит 5 * 6-1 = 29 запусков, которые выполняются сразу после друг друга, проверяя почту и /выполнить некоторую обработку без перерыва на сервере.
Кто-нибудь знает, как я могу решить эту проблему?
PS То, как я сейчас настраиваю свое приложение, это то, что я использую сервлет Java на своем сервере Tomcat, который запускается при запуске сервера, где он создает экземпляр Singleton моей основной программы, а затем вызывает некоторый метод дляделать выборку / обработку.И я хочу повторить эту выборку / обработку каждый «х» промежуток времени (10 минут или около того), убедившись, что действительно только 1 экземпляр делает это и что действительно после каждого запуска 10 минут или около того отдано отдыху.