Java повторяет часть кода... используя потоки

Скажем, у меня есть этот код:

public class helloworld
{
        public static void main(String args[])
        {

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

        }
}

Используя потоки, есть ли способ, с помощью которого я могу настроить Hello World echo непрерывно каждые 5 секунд?

Ответ 1

Эта версия непрерывно повторяет глобальное сообщение hello, позволяя пользователю прекратить поток сообщений:

public class HelloWorld {

    public static void main(String[] args) throws Exception {
        Thread thread = new Thread(new Runnable() {

            public void run() {
                try {
                    while (!Thread.currentThread().isInterrupted()) {
                        Thread.sleep(5000);
                        System.out.println("Hello World!");
                    }
                } catch (InterruptedException e) {
                    Thread.currentThread().interrupt();
                }
            }
        });
        thread.start();
        System.out.println("press any key to quit");
        System.in.read();
        thread.interrupt();
    }
}

Ответ 2

Как насчет этого?

public class helloworld
{
        public static void main(String args[])
        {
           while(true) {
               Thread.sleep(5000);
               System.out.println("Hello World!");
           }
        }
}

Ответ 4

Самый простой способ -

Runnable r = new Runnable(){
public void run(){
  while(somecondition){
    Thread.sleep(5000); // need to catch exceptions
    helloworld.main(null);
   }
}

new Thread(r).start();

Но вы, вероятно, должны использовать Timer и классы TimerTask вместо этого через пакет java.concurrency.

Ответ 5

Используя ScheduledExecutorService:

ScheduledExecutorService.scheduleAtFixedRate(new Runnable() {
  @Override public void run() {
    System.out.println("Hello, world!");
  }
}, 0 /* initial delay */, 5, TimeUnit.SECONDS);