Печать "привет мир" каждые X секунд
В последнее время я использую циклы с большими номерами для печати Hello World
:
int counter = 0;
while(true) {
//loop for ~5 seconds
for(int i = 0; i < 2147483647 ; i++) {
//another loop because it 2012 and PCs have gotten considerably faster :)
for(int j = 0; j < 2147483647 ; j++){ ... }
}
System.out.println(counter + ". Hello World!");
counter++;
}
Я понимаю, что это очень глупый способ сделать это, но я никогда не использовал никаких таймерных библиотек в Java. Как можно изменить вышеприведенное для печати каждые три секунды?
Ответы
Ответ 1
Вы также можете посмотреть 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);
Ответ 2
Если вы хотите выполнить периодическую задачу, используйте ScheduledExecutorService
. В частности ScheduledExecutorService.scheduleAtFixedRate
Код:
Runnable helloRunnable = new Runnable() {
public void run() {
System.out.println("Hello world");
}
};
ScheduledExecutorService executor = Executors.newScheduledThreadPool(1);
executor.scheduleAtFixedRate(helloRunnable, 0, 3, TimeUnit.SECONDS);
Ответ 3
Попробуйте сделать это:
Timer t = new Timer();
t.schedule(new TimerTask() {
@Override
public void run() {
System.out.println("Hello World");
}
}, 0, 5000);
Этот код будет запускать печать в консоли Hello World каждые 5000 миллисекунд ( 5 секунд).
Для получения дополнительной информации прочитайте https://docs.oracle.com/javase/1.5.0/docs/api/java/util/Timer.html
Ответ 4
Используйте Thread.sleep(3000) для looop
Ответ 5
Я выясню это с помощью таймера, надеюсь, что это поможет. Я использовал таймер от 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);
Ответ 6
Самый простой способ - установить основной поток для отключения 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:
Заставляет текущий исполняемый поток спать (временно прекратить выполнение) за указанное количество миллисекунд, с учетом точности и точности системных таймеров и планировщиков.
Ответ 7
Используйте метод 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);
}
}
Ответ 8
Что он сказал. Вы можете обрабатывать исключения, как вам нравится, но Thread.sleep(миллисекунды);
это лучший маршрут.
public static void main(String[] args) throws InterruptedException {
Ответ 9
Это простой способ использования потока в 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!");
}
Ответ 10
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());
}
}
}
}
создается бесконечный цикл. Задача планировщика объявлений настроена.
Ответ 11
Вот еще один простой способ использования интерфейса 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();
}
}
Ответ 12
Добавить Thread.sleep
try {
Thread.sleep(3000);
} catch(InterruptedException ie) {}
Ответ 13
Для небольших приложений хорошо использовать Timer и TimerTask, как упоминал Рохит, но в веб-приложениях я бы использовал Quartz Scheduler для планирования заданий и выполнять такие периодические задания.
См. tutorials для планирования кварца.
Ответ 14
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();
}
}
}