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