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!");
}
}
}
Ответ 3
проверить
http://download.oracle.com/javase/tutorial/essential/concurrency/sleep.html
он делает то, что вы хотите сделать. в основном выполняйте печать в цикле while, а после печати сделайте
Thread.sleep(5000);
Ответ 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);