개발 중에는 몇 분마다 작업을 수행하는 등 주기적 작업을 수행해야 하는 경우가 많습니다. 이때 타이머를 설정해야 합니다. 이를 Java로 구현하는 가장 편리하고 효율적인 방법은 java.util.Timer 도구 클래스를 사용한 다음 java.util.TimerTask 작업을 예약하는 것입니다.
1. 소개
타이머는 스레드가 향후 백그라운드 스레드에서 실행될 작업을 예약하는 데 사용하는 도구입니다. 작업은 한 번 실행되거나 주기적으로 반복되도록 예약할 수 있습니다. 실제로는 예약된 스케줄링이 소유한 TimerTasks 스레드입니다.
TimerTask는 추상 클래스이며 해당 하위 클래스는 작업을 한 번 또는 반복적으로 수행하도록 Timer에 의해 배열됩니다. 실제로는 run 메소드가 있는 클래스인데, 정기적으로 실행해야 하는 코드가 run 메소드 본문에 들어있습니다.
2. 호출 방법
Timer 타이머 = Timer(true);
// Swing이 있는 경우 Timer 클래스도 있습니다. 가져오기 패키지에 사용되는 경우 이름 충돌에 주의하세요.
TimerTask task = new TimerTask() {
public void run() {
... //필요한 코드를 배치합니다. 매번 실행됩니다. 안으로 들어가세요.
}
};
//다음은 작업 예약에 일반적으로 사용되는 몇 가지 방법입니다.
timer.schedule(task, time);
// time은 Date 유형: 지정된 시간에 한 번 실행됩니다.
timer.schedule(task, firstTime, period)
// firstTime은 날짜 유형이고 기간은 길다
// firstTime 순간부터 매 밀리초 단위로 시작하고 실행합니다.
timer.schedule(task, Delay)
// 지연은 긴 유형입니다. 지금부터 지연 밀리초 후에 한 번 실행됩니다
timer.schedule(작업, 지연, 기간)
// 지연이 길다, 기간이 길다: 지금부터 지연 밀리초가 지나면 기간마다 실행된다
/ / 밀리초 한 번.
Schedule()과 ScheduleAtFixedRate()의 차이점은 무엇인가요?
우선 스케줄(TimerTask 태스크, 날짜 시간)과 스케줄(TimerTask 태스크, 긴 지연)은 단일 실행 작업일 뿐이고 태스크를 여러 번 호출하는 상황이 아니므로 방법이 없습니다. ScheduleAtFixedRate 메소드를 호출합니다. 모두 동일한 기능을 구현하는데 차이점은 무엇입니까?
(1) Schedule() 메서드는 간격의 안정성을 유지하는 데 더 많은 주의를 기울입니다. 즉, 간격마다 한 번씩 호출할 수 있도록 보장합니다.
(2) ScheduleAtFixedRate() 메서드는 실행 빈도의 안정성을 유지하는 데 더 많은 주의를 기울입니다. 즉, 여러 호출의 빈도가 기간 시간에 가까워지도록 보장합니다. 특정 호출 시간이 기간보다 길면 다음 번에는 가능한 한 기간보다 적게 보장된 빈도가 기간에 가깝습니다.
3. 샘플 데모
맞춤 작업:
import java.util.Timer;
import java.util.TimerTask; >
public class TimerTaskTest는 TimerTask를 확장합니다{
@Override
public void run() {
// TODO Auto- 생성된 메소드 스텁
System.out.println("Perform task...");
}
}
java를 호출합니다. util .Timer:
import java.util.Timer;
/**
* 지정된 시간부터 고정 비율 기간 반복 실행을 수행하도록 지정된 작업을 예약합니다. firstTime
* 매일 낮 12시에 한 번 실행
*/
공용 클래스 테스트 {
public static void main(String[] args){
타이머 타이머 = new Timer();
Calendar 달력 = Calendar.getInstance();
달력 . set(Calendar.HOUR_OF_DAY, 12);//시간 제어
Calendar.set(Calendar.MINUTE, 0);//분 제어
Calendar.set(Calendar.SECOND, 0 ) ;//초 제어
날짜 시간 = Calendar.getTime();//작업 실행 시간은 12:00:00
타이머 타이머 = new Timer() ;
//매일 12시에 작업을 실행하고 하루 지연 후 실행
타이머.schedule(new TimerTaskTest(), time, 1000 * 60 * 60 * 24);
}
}
결론: 이 글에서는 Java와 함께 제공되는 타이머 도구 클래스인 Timer에 대해서만 간략하게 소개합니다. 단점, 지적해주세요. 관심 있는 분들은 또 다른 타이머 오픈 소스 프로젝트인 QUARTZ를 확인해 보세요. 나눔은 일종의 행복이고, 끈기는 일종의 정신이다.
Java 타이머 사용과 관련된 더 많은 기사(Timer 소개)를 보려면 PHP 중국어 웹사이트를 주목하세요!