Цикл Java каждую минуту

Я хочу записать цикл в Java, который ели запускают и идут как это:

while (!x){
    //wait one minute or two

    //execute code
}

Я хочу сделать это так, чтобы это не израсходовало системные ресурсы. То, что на самом деле продолжается в коде, - то, что он переходит к веб-сайту и проверкам, чтобы видеть, сделано ли что-то, если он не сделан, он должен ожидать другая минута, пока он не проверяет снова, и когда его сделанный он просто идет дальше. Их так или иначе, чтобы сделать это в Java?

26
задан cblupo 30 August 2013 в 20:14
поделиться

3 ответа

Используйте Thread.sleep (длинный миллис) .

Заставляет текущий выполняющийся поток спать (временно прекращать выполнение) на указанное количество миллисекунд, в зависимости от точности и точности системных таймеров и планировщиков. Поток не теряет права собственности ни на какие мониторы.

Одна минута будет (60 * 1000) = 60000 миллисекунд.


Например, этот цикл будет печатать текущее время каждые 5 секунд:

    try {
        while (true) {
            System.out.println(new Date());
            Thread.sleep(5 * 1000);
        }
    } catch (InterruptedException e) {
        e.printStackTrace();
    }

Если период сна становится слишком большим для int , явно вычислить в long (например, 1000L ).

54
ответ дан 28 November 2019 в 06:01
поделиться

Вы можете использовать Таймер

Timer timer = new Timer();

timer.schedule( new TimerTask() {
    public void run() {
       // do your work 
    }
 }, 0, 60*1000);

Когда придет время

  timer.cancel();

Чтобы выключить его.

54
ответ дан 28 November 2019 в 06:01
поделиться
ScheduledExecutorService executor = Executors.newScheduledThreadPool(1);
executor.schedule(yourRunnable, 1L, TimeUnit.MINUTES);
...
// when done...
executor.shutdown();
13
ответ дан 28 November 2019 в 06:01
поделиться
Другие вопросы по тегам:

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