programing

X초마다 "hello world" 인쇄

copysource 2023. 1. 24. 10:05
반응형

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초마다 인쇄하려면 위의 내용을 어떻게 수정해야 할까요?

정기적인 작업을 수행하려면ScheduledExecutorService. 특히 Scheduled Executor Service.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);

또한 다음 시간마다 실행되도록 작업을 예약하는 데 사용할 수 있는 및 클래스를 볼 수 있습니다.n초수

확장 클래스가 필요합니다.TimerTask를 덮어씁니다.public void run()method - 해당 클래스의 인스턴스를 method로 전달할 때마다 실행됩니다.

여기 예가 있습니다.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);

다음을 수행합니다.

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)루프를 위한 내부.

주의: 이 작업에는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초) sleep으로 설정하는 것입니다.

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밀리초 이상 스레드가 중지됩니다.스레드는 더 많은 시간을 sleeve 상태로 둘 수 있지만 이는 JVM에 달려 있습니다.유일하게 보증되는 것은 스레드가 적어도 그 밀리초 동안 sleeve 상태가 된다는 것입니다.다음 문서를 참조하십시오.

시스템 타이머스케줄러의 정밀도와 정확도에 따라 현재 실행 중인 스레드가 지정된 밀리초 동안 sleep(일시적으로 실행 중지) 상태가 됩니다.

사용하다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!");
}

그가 말한 것.예외는 원하는 방식으로 처리할 수 있지만 스레드는 처리할 수 없습니다.sleep(밀리초)은 선택하기에 가장 좋은 경로입니다.

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();
    }
}

더하다Thread.sleep

try {
        Thread.sleep(3000);
    } catch(InterruptedException ie) {}

소규모 어플리케이션에서는 Rohit에서 설명한 바와 같이 Timer와 TimerTask를 사용하는 것도 좋지만 웹 어플리케이션에서는 Quartz Scheduler를 사용하여 작업을 스케줄하고 정기적으로 작업을 수행합니다.

쿼츠 스케줄링은 튜토리얼을 참조해 주세요.

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();
    }
  }
}

언급URL : https://stackoverflow.com/questions/12908412/print-hello-world-every-x-seconds

반응형