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