최근에 많은 수의 루프를 사용하여 인쇄했습니다 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 초마다 인쇄하도록 위의 내용을 어떻게 수정합니까?
답변
또한 매 초 마다 작업이 실행되도록 예약하는 데 사용할 수있는 클래스 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);
이 코드는 5000 밀리 초 ( 5 초) 마다 Hello World 를 콘솔로 인쇄합니다 . 자세한 정보는 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);
답변
Thread.sleep(3000)
내부 for 루프를 사용할 수 있습니다 .
참고 :try/catch
블록 이 필요합니다 .
답변
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());
}
}
}
}
무한 루프 생성 광고 스케줄러 작업이 구성되었습니다.
답변
가장 쉬운 방법은 기본 스레드를 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
문서를 살펴보십시오 .
시스템 타이머 및 스케줄러의 정밀도 및 정확성에 따라 현재 실행중인 스레드가 지정된 시간 (밀리 초) 동안 휴면 (일시적으로 실행 중단) 되도록합니다 .