[java] X 초마다 “hello world”인쇄

최근에 많은 수의 루프를 사용하여 인쇄했습니다 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 초마다 인쇄하도록 위의 내용을 어떻게 수정합니까?



답변

또한 매 초 마다 작업이 실행되도록 예약하는 데 사용할 수있는 클래스 TimerTimerTask클래스를 살펴볼 수도 있습니다 n.

메서드 를 확장 TimerTask하고 재정의 하는 클래스가 필요합니다.이 클래스 public void run()는 해당 클래스의 인스턴스를 timer.schedule()메서드에 전달할 때마다 실행됩니다 .

다음은 Hello World5 초마다 인쇄되는 예입니다 .-

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.TimerTimerTask같은 패키지에서. 아래를보십시오 :

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문서를 살펴보십시오 .

시스템 타이머 및 스케줄러의 정밀도 및 정확성에 따라 현재 실행중인 스레드가 지정된 시간 (밀리 초) 동안 휴면 (일시적으로 실행 중단) 되도록합니다 .