Я сомневаюсь относительно него. Даже компилятор автоматически встраивает некоторые функции для оптимизации.
Согласно сообщению abyx , Timer
и TimerTask
- хорошее легкое решение для запуска класса через определенный интервал. Если вам нужен мощный планировщик, Могу я предложить Кварц . Это планировщик заданий на уровне предприятия. Он легко справляется с тысячами запланированных заданий. Как я уже сказал, это может быть излишним для вашей ситуации.
Вы можете использовать Timer
и TimerTask
. Пример показан здесь .
See java.util.Timer
. You'll need to start a robot in a separate thread when your app comes up and have it do the polling.
Проверьте ответы на вопрос «Как ежедневно запускать задачу с Java» , чтобы получить список ресурсов, связанных с вашей проблемой.
Другие ответы в основном советуют вам создавать свои собственные темы. В этом нет ничего плохого, но это не соответствует спецификации EJB. Если это проблема, вы можете использовать средства таймера JBoss. Здесь - пример того, как это сделать.
Однако, если проблема связана со спецификацией EJB, сохранение состояния, такого как ArrayList, также несовместимо, поэтому, если вы просто читаете некоторую статическую переменную в любом случае, использование службы таймера контейнера, вероятно, будет излишним.
Я бы также порекомендовал ScheduledExecutorService , который предлагает повышенную гибкость по сравнению с Timer
и TimerTask
, включая возможность настройки службы с несколькими потоками. Это означает, что если выполнение определенной задачи занимает много времени, это не помешает запуску других задач.
// Create a service with 3 threads.
ScheduledExecutorService execService = Executors.newScheduledThreadPool(3);
// Schedule a task to run every 5 seconds with no initial delay.
execService.scheduleAtFixedRate(new Runnable() {
public void run() {
System.err.println("Hello, World");
}
}, 0L, 5L, TimeUnit.SECONDS);