Java 타이머(Timer, TimerTask) 상세 정보 및 인스턴스 코드
JAVA에서 타이머 기능을 실현하는 데 사용할 두 가지 종류는 Timer, TimerTask
Timer 클래스는 작업을 수행하는 클래스로 TimerTask를 매개 변수로 사용합니다.
Timer는 두 가지 작업 수행 모드가 있는데 가장 자주 사용하는 것은 schedule입니다. 두 가지 방식으로 작업을 수행할 수 있습니다. 1: 특정한 시간(Data), 2: 특정한 시간 이후(int delay).이 두 가지 방식은 모두 임무 집행의 빈도를 지정할 수 있다. 본고는 두 가지 예가 있는데 하나는 간단한 것이고 하나는 내부 클래스를 사용한 것이다.
1. 간단한 실례
일단 클래스를 하나 써볼게요.
public class TimeTest {
public static void main(String[] args) {
Timer timer = new Timer();
timer.schedule(new MyTask(),1000,2000);
}
그리고 또 클래스를 쓰도록 하겠습니다.
public class MyTask extends TimerTask{
@Override
public void run() {
System.out.println(" ");
}
}
이렇게 하면 간단한 타이머를 완성할 수 있지만, 또 하나의 방법은 이 두 종류를 한 종류, 즉 내부 종류에 기록하는 것이다2. 내부 클래스
public class SerchRun {
protected static void startRun(){
Timer timer = new Timer();
TimerTask task =new TimerTask(){
public void run(){
System.out.println(" "); //
}
};
timer.scheduleAtFixedRate(task, new Date(),2000);// 2
// timer.scheduleAtFixedRate(task, 1000,2000); // 1 2
}
public static void main(String[] args) {
SerchRun.startRun();
}
}
schedule과 schedule AtFixedRate의 차이점은 실행 시작 시간이 현재 시스템 운행 시간 이전에 지정되면, schedule AtFixedRate는 이미 지나간 시간도 주기로 실행하고, schedule는 과거의 시간을 포함하지 않는다는 것이다.예:
SimpleDateFormat fTime = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
Date d1 = fTime.parse("2005/12/30 14:10:00");
t.scheduleAtFixedRate(new TimerTask(){
public void run()
{
System.out.println("this is task you do6");
}
},d1,3*60*1000);
간격은 3분이고 시작 시간은 2005/12/30 14:10:00입니다. 만약 제가 14:17:00분에 이 프로그램을 실행한다면 즉시 세 번 인쇄할 것입니다
this is task you do6 //14:10
this is task you do6 //14:13
this is task you do6 //14:16
그리고 다음 실행은 14:19에서 14:20이 아니라는 것을 주의하십시오.지정된 시작 시간부터 시간을 재는 것이지 실행 시간부터 시간을 재는 것이 아니다.그러나 위에서 schedule 방법을 사용하면 간격이 3분이고 지정한 시작 시간은 2005/12/30 14:10:00이며 14:17:00에 이 프로그램을 실행하면 즉시 프로그램을 한 번 실행합니다.그리고 다음 실행 시간은 14:20이지 14:10부터 계산하는 주기(14:19)가 아니다.
읽어주셔서 감사합니다. 여러분에게 도움이 되었으면 좋겠습니다. 본 사이트에 대한 지지에 감사드립니다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JPA + QueryDSL 계층형 댓글, 대댓글 구현(2)이번엔 전편에 이어서 계층형 댓글, 대댓글을 다시 리팩토링해볼 예정이다. 이전 게시글에서는 계층형 댓글, 대댓글을 구현은 되었지만 N+1 문제가 있었다. 이번에는 그 N+1 문제를 해결해 볼 것이다. 위의 로직은 이...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.