Как Вы эффективно повторяете действие каждый x минуты?

Я сомневаюсь относительно него. Даже компилятор автоматически встраивает некоторые функции для оптимизации.

5
задан Bill the Lizard 5 August 2012 в 20:21
поделиться

6 ответов

Согласно сообщению abyx , Timer и TimerTask - хорошее легкое решение для запуска класса через определенный интервал. Если вам нужен мощный планировщик, Могу я предложить Кварц . Это планировщик заданий на уровне предприятия. Он легко справляется с тысячами запланированных заданий. Как я уже сказал, это может быть излишним для вашей ситуации.

9
ответ дан 18 December 2019 в 05:43
поделиться

Вы можете использовать Timer и TimerTask . Пример показан здесь .

5
ответ дан 18 December 2019 в 05:43
поделиться

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.

0
ответ дан 18 December 2019 в 05:43
поделиться

Проверьте ответы на вопрос «Как ежедневно запускать задачу с Java» , чтобы получить список ресурсов, связанных с вашей проблемой.

0
ответ дан 18 December 2019 в 05:43
поделиться

Другие ответы в основном советуют вам создавать свои собственные темы. В этом нет ничего плохого, но это не соответствует спецификации EJB. Если это проблема, вы можете использовать средства таймера JBoss. Здесь - пример того, как это сделать.

Однако, если проблема связана со спецификацией EJB, сохранение состояния, такого как ArrayList, также несовместимо, поэтому, если вы просто читаете некоторую статическую переменную в любом случае, использование службы таймера контейнера, вероятно, будет излишним.

0
ответ дан 18 December 2019 в 05:43
поделиться

Я бы также порекомендовал 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);
16
ответ дан 18 December 2019 в 05:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: