2010-10-26 2 views
0

Как вы активируете или запускаете цикл каждую десятую секунды? Я хочу запустить некоторый скрипт по прошествии некоторого времени.Java: запуск скрипта после временного интервала

Запустить сценарий каждые второй или что-то в этом роде. (обратите внимание на полужирный шрифт на каждом)

ответ

3

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

timer = new Timer(); 
    timer.schedule(new RemindTask(), seconds*1000); 

Вам нужно просто задать Runnable. Вам не придется беспокоиться об определении/планирования темы и т.д. См Timer Javadoc для получения дополнительной информации/опций (и Quartz если вы хотите гораздо более сложность и гибкость)

+0

Есть ли способ использовать это, но запускать скрипт каждые 1000 миллисекунд, а не только один раз? –

+0

Возможно, запустите сценарий после его запуска? –

+0

Вы можете использовать scheduleAtFixedRate() –

0

Вы спите.

Проверьте Thread.sleep(), но предупреждайте, что вы, вероятно, действительно не хотите, чтобы вся ваша программа спала, поэтому вы можете создать поток, чтобы явно содержать цикл и это поведение сна.

Обратите внимание, что сн только задерживается на несколько миллисекунд; и это число не является идеальной гарантией. Если вам нужно лучшее временное разрешение, вам нужно будет использовать System.currentTimeMillis() и выполнить «математику времени» самостоятельно. Самый типичный сценарий - это когда вы запускаете что-то, и вы хотите, чтобы он работал каждую минуту. Время запуска скрипта должно быть захвачено путем захвата System.currentTimeMillis() до и после сценария, а затем вам нужно будет спать оставшиеся 1000 - scriptRunTime миллисекунд.

2

Поскольку Java 1.5:

ScheduledExecutorService executor = Executors.newScheduledThreadPool(1); 
executor.scheduleAtFixedRate(new RepeatedTask(), 0, 100, TimeUnit.MILLISECONDS); 

и

private class RepeatedTask implements Runnable { 
    @Override 
    public void run() { 
     // do something here 
    } 
} 

(вспомните shotdown() ваш исполнитель, когда закончил)

Смежные вопросы