Печать "hello world" каждые X секунд


в последнее время я использую петли с больших количествах для печати Hello World:

int counter = 0;

while(true) {
    //loop for ~5 seconds
    for(int i = 0; i < 2147483647 ; i++) {
        //another loop because it's 2012 and PCs have gotten considerably faster :)
        for(int j = 0; j < 2147483647 ; j++){ ... }
    }
    System.out.println(counter + ". Hello World!");
    counter++;
}

Я понимаю, что это очень глупый способ сделать это, но я еще никогда не использовал библиотеки таймеров в Java. Как бы изменить вышеизложенное, чтобы печатать каждые 3 секунды?

14 99

14 ответов:

вы также можете посмотреть Timer и TimerTask классы, которые вы можете использовать, чтобы запланировать выполнение задачи каждый n секунд.

нужен класс, который расширяет TimerTask и переопределить public void run() метод, который будет выполняться каждый раз, когда вы передать экземпляр этого класса timer.schedule() метод..

вот пример, который выводит Hello World каждые 5 секунд: -

class SayHello extends TimerTask {
    public void run() {
       System.out.println("Hello World!"); 
    }
}

// And From your main() method or any other method
Timer timer = new Timer();
timer.schedule(new SayHello(), 0, 5000);

Если вы хотите выполнить периодическую задачу, используйте ScheduledExecutorService. В частности ScheduledExecutorService.класс

код:

Runnable helloRunnable = new Runnable() {
    public void run() {
        System.out.println("Hello world");
    }
};

ScheduledExecutorService executor = Executors.newScheduledThreadPool(1);
executor.scheduleAtFixedRate(helloRunnable, 0, 3, TimeUnit.SECONDS);

попробуйте сделать это:

Timer t = new Timer();
t.schedule(new TimerTask() {
    @Override
    public void run() {
       System.out.println("Hello World");
    }
}, 0, 5000);

этот код будет запущен print to console Привет, Мир каждый 5000 миллисекунд (5 секунд). Для получения дополнительной информации, прочитайте https://docs.oracle.com/javase/1.5.0/docs/api/java/util/Timer.html

Нить Использовать.сон(3000) внутри для looop

я выясняю это с помощью таймера, надеюсь, что это поможет. Я использовал таймер от java.util.Timer и TimerTask из того же пакета. Смотрите ниже:

TimerTask task = new TimerTask() {

    @Override
    public void run() {
        System.out.println("Hello World");
    }
};

Timer timer = new Timer();
timer.schedule(task, new Date(), 3000);

самый простой способ-установить основной поток в спящий режим 3000 миллисекунд (3 секунды):

for(int i = 0; i< 10; i++) {
    try {
        //sending the actual Thread of execution to sleep X milliseconds
        Thread.sleep(3000);
    } catch(InterruptedException ie) {}
    System.out.println("Hello world!"):
}

это остановит поток по крайней мере X миллисекунд. Поток может спать больше времени, но это зависит от JVM. Единственное, что гарантировано, это то, что поток будет спать по крайней мере эти миллисекунды. Взгляните на Thread#sleep doc:

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

использовать java.util.Timer и Timer#schedule(TimerTask,delay,period) метод поможет вам.

public class RemindTask extends TimerTask {
    public void run() {
      System.out.println(" Hello World!");
    }
    public static void main(String[] args){
       Timer timer = new Timer();
       timer.schedule(new RemindTask(), 3000,3000);
    }
  }

Это простой способ использовать поток в java:

for(int i = 0; i< 10; i++) {
    try {
        //sending the actual Thread of execution to sleep X milliseconds
        Thread.sleep(3000);
    } catch(Exception e) {
        System.out.println("Exception : "+e.getMessage());
    }
    System.out.println("Hello world!");
}
public class HelloWorld extends TimerTask{

    public void run() {

        System.out.println("Hello World");
    }
}


public class PrintHelloWorld {
    public static void main(String[] args) {
        Timer timer = new Timer();
        timer.schedule(new HelloWorld(), 0, 5000);

        while (true) {
            try {
                Thread.sleep(2000);
            } catch (InterruptedException e) {
                System.out.println("InterruptedException Exception" + e.getMessage());
            }
        }
    }
}

бесконечный цикл создан задача планировщика объявлений настроена.

что он сказал. Вы можете обрабатывать исключения, как вам нравится, но Нитка.сон(миллисекунды); это лучший маршрут, чтобы взять.

public static void main(String[] args) throws InterruptedException {

вот еще один простой способ использования Runnable интерфейса в конструкторе потоков

public class Demo {
    public static void main(String[] args) {
        Thread t1 = new Thread(new Runnable() {

            @Override
            public void run() {
                for(int i = 0; i < 5; i++){
                    try {
                        Thread.sleep(3000);
                    } catch (InterruptedException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                    System.out.println("Thread T1 : "+i);
                }
            }
        });

        Thread t2 = new Thread(new Runnable() {

            @Override
            public void run() {
                for(int i = 0; i < 5; i++) {
                    try {
                        Thread.sleep(3000);
                    } catch (InterruptedException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                    System.out.println("Thread T2 : "+i);
                }
            }
        });

        Thread t3 = new Thread(new Runnable() {

            @Override
            public void run() {
                for(int i = 0; i < 5; i++){
                    try {
                        Thread.sleep(3000);
                    } catch (InterruptedException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                    System.out.println("Thread T3 : "+i);
                }
            }
        });

        t1.start();
        t2.start();
        t3.start();
    }
}

добавить Thread.sleep

try {
        Thread.sleep(3000);
    } catch(InterruptedException ie) {}

для небольших приложений можно использовать таймер и TimerTask, как упоминалось в Rohit, но в веб-приложениях я бы использовал Кварц Планировщик планировать работу и выполнять такие периодические работы.

посмотреть уроки для кварцевого планирования.

public class TimeDelay{
  public static void main(String args[]) {
    try {
      while (true) {
        System.out.println(new String("Hello world"));
        Thread.sleep(3 * 1000); // every 3 seconds
      }
    } catch (InterruptedException e) {
      e.printStackTrace();
    }
  }
}