Печать "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 ответов:
вы также можете посмотреть
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
я выясняю это с помощью таймера, надеюсь, что это поможет. Я использовал таймер от
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(); } }
для небольших приложений можно использовать таймер и TimerTask, как упоминалось в Rohit, но в веб-приложениях я бы использовал Кварц Планировщик планировать работу и выполнять такие периодические работы.
посмотреть уроки для кварцевого планирования.