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 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);
다음을 수행합니다.
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
'programing' 카테고리의 다른 글
요청 라이브러리에서 로그 메시지를 비활성화하려면 어떻게 해야 합니까? (0) | 2023.01.24 |
---|---|
CodeIgniter:컨트롤러, 액션, URL 정보를 얻는 방법 (0) | 2023.01.24 |
screenX/Y, clientX/Y 및 pageX/Y의 차이점은 무엇입니까? (0) | 2023.01.24 |
Mockito Matcher 및 원시 요소 배열 (0) | 2023.01.24 |
포인터 산술 (0) | 2023.01.24 |