Computer >> 컴퓨터 >  >> 프로그램 작성 >> Java

Java에서 타이머 스레드를 어떻게 구현할 수 있습니까?


타이머 클래스는 주어진 시간에 한 번 또는 반복적으로 실행되도록 작업을 예약합니다. 또한 데몬 스레드로 백그라운드에서 실행할 수 있습니다. Timer를 데몬 스레드와 연결하기 위해 부울 생성자가 있습니다. 값. 타이머는 고정 지연으로 작업을 예약합니다. 고정 요율 . 고정 지연에서 시스템 GC에 의해 실행이 지연되는 경우 , 다른 실행도 지연되고 모든 실행은 이전 실행에 따라 지연됩니다. 고정된 비율로 시스템 GC에 의해 실행이 지연되는 경우 그런 다음 첫 번째 실행 시작 시간에 해당하는 고정 비율을 커버하기 위해 2-3개의 실행이 연속적으로 발생합니다. Timer 클래스는 cancel()을 제공합니다. 타이머를 취소하는 방법입니다. 이 메서드가 호출되면 Timer가 종료됩니다. Timer 클래스는 TimerTask를 구현하는 작업만 실행합니다. .

예시

import java.util.*;
public class TimerThreadTest {
   public static void main(String []args) {
      Task t1 = new Task("Task 1");
      Task t2 = new Task("Task 2");
      Timer t = new Timer();
      t.schedule(t1, 10000); //  executes for every 10 seconds
      t.schedule(t2, 1000, 2000); // executes for every 2 seconds
   }
}
class Task extends TimerTask {
   private String name;
   public Task(String name) {
       this.name = name;
   }
   public void run() {
      System.out.println("[" + new Date() + "] " + name + ": task executed!");
   }
}

출력

[Thu Aug 01 21:32:44 IST 2019] Task 2: task executed!
[Thu Aug 01 21:32:46 IST 2019] Task 2: task executed!
[Thu Aug 01 21:32:48 IST 2019] Task 2: task executed!
[Thu Aug 01 21:32:50 IST 2019] Task 2: task executed!
[Thu Aug 01 21:32:52 IST 2019] Task 2: task executed!
[Thu Aug 01 21:32:53 IST 2019] Task 1: task executed!
[Thu Aug 01 21:32:54 IST 2019] Task 2: task executed!
[Thu Aug 01 21:32:56 IST 2019] Task 2: task executed!
[Thu Aug 01 21:32:58 IST 2019] Task 2: task executed!
[Thu Aug 01 21:33:00 IST 2019] Task 2: task executed!