타이머 의 실현, 자바 타이머 타이머 와 Quartz 의 비교
6562 단어 quartz
public class MyTask extends TimerTask{
int count = 0;
public void run() {
System.out.println(" TimerTask "+count);
count++;
}
}
public class MyTaskB extends TimerTask{
int count = 0;
public void run() {
System.out.println(" MyTaskB "+count);
count++;
}
}
main 방법 에서 Timer timer = new Timer (); / * * 테스트 * 타이머 작업 작성, 실행 * @param tag: 0. 지 정 된 시간 에 지 정 된 작업 을 수행 합 니 다. * 1. 지 정 된 시간 에 지 정 된 지연 에 따라 지 정 된 임 무 를 반복 한다. * 2. 지 정 된 지연 후 지 정 된 작업 을 수행 합 니 다. * 3. 지 정 된 지연 후 지 정 된 지연 에 따라 지 정 된 작업 을 반복 합 니 다. * * @param my date: 지정 한 실행 시간.tag 가 0, 1 이 어야 만 지정 할 수 있 습 니 다. * @param delay: 실행 지연 시간, 밀리초 수.tag 가 1, 3 이 어야 지정 할 수 있 습 니 다. * @param period: 간격 실행 시간, 밀리초 수.tag 에서 4 와 같 아야 만 지정 할 수 있 습 니 다. */
// ,
public static void main(String[] args) {
new TestA().timer.schedule(new MyTask(), 1000);
new TestA().timer.schedule(new MyTaskB(), 4000);
}
주: timer 는 웹 에서 도 사용 할 수 있 습 니 다.MyTask () 와 MyTaskB () 안의 방법 을 직접 수정 하면 되 며, 작업 이 끝 난 후 timer 를 끄 고 시간 을 정할 수도 있다.결론: 사실 timer 가 정시 임 무 를 실현 하 는 것 은 매우 간단 하지만 아이디어 개발 에 있어 서 는 timer 를 거의 사용 하지 않 고 spring 의 Quartz 를 사용한다.나 도 인터넷 에서 약간의 자 료 를 찾 았 으 니, 지금 총 결 해 보 자.1. 자바 타이머 가 영구적 인 메커니즘 이 없습니다.2. 자바 타이머 의 일정 관리 가 원활 하지 못 함 (시작 시간, 반복 되 는 간격 만 설정 하고 특정한 날짜, 시간 등 을 설정 할 수 있 음) / / 이 점 은 공감 합 니 다.4. 자바 타이머 에 확실한 관리 방안 이 없 으 면 저장, 조직, 복구 작업 을 스스로 완성 해 야 합 니 다. 예 를 들 어 제 가 my eclipse 에서 작은 프로젝트 를 만 들 었 습 니 다. 참고 하 시기 바 랍 니 다.첫 번 째 단 계 는 웹 프로젝트 (생략) 를 만 들 고 두 번 째 단 계 는 필요 한 가방 을 가 져 옵 니 다. 다음 과 같이 가방 을 사 용 했 습 니 다. (이 9 개의 가방 은 더 이상 말 하지 않 겠 습 니 다. 모두 가 그의 용 도 를 알 고 있 을 것 입 니 다.) 세 번 째 단계: 관련 파일 을 설정 합 니 다.web.xml、quartz.properties、quartz_job. xml 이 세 파일.여 기 는 spring 의 applicationContext. xml 파일 로 관리 하지 않 았 습 니 다.사실 원 리 는 모두 웹 이 시 작 될 때 모니터 를 하고 타 이 머 를 작 동 하 는 것 이다.spring 을 설정 하 는 quartz 타 이 머 는 두 가지 방법 이 있 습 니 다. 하 나 는 quartz. properties, quartz 를 사용 하 는 것 입 니 다.job. xml, 다른 하 나 는 spring 의 applicationContext. xml 를 사용 합 니 다.사실 개발 할 때 저 는 앞의 하 나 를 좋아 합 니 다. 간단 하고 편리 하기 때문에 spring 의 applicationContext. xml 에 각종 설정 이 있 습 니 다. 각종 주입 은 파일 이 뚜렷 하지 않 습 니 다 (개인 적 인 견해 입 니 다. 하하) (프로젝트 의 파일 위치, src 디 렉 터 리 에 직접 놓 습 니 다) 네 번 째 단계: 웹 xml 파일 설정 (감청 과 시작 타이머)
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<listener>
<listener-class>
org.quartz.ee.servlet.QuartzInitializerListener
</listener-class>
</listener>
<!-- timer -->
<context-param>
<param-name>config-file</param-name>
<param-value>/quartz.properties</param-value>
</context-param>
<context-param>
<param-name>shutdown-on-unload</param-name>
<param-value>true</param-value>
</context-param>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
다섯 번 째 단계: quartz. properties 파일 설정
org.quartz.scheduler.instanceName = TestScheduler
org.quartz.scheduler.instanceId = one
org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool
org.quartz.threadPool.threadCount = 2
org.quartz.threadPool.threadPriority = 4
org.quartz.plugin.jobInitializer.class = org.quartz.plugins.xml.JobInitializationPlugin
org.quartz.plugin.jobInitializer.fileName = quartz_job.xml
주해: 주로 quartz 를 시작 합 니 다.job.xml。나머지 는 모두 성능 을 설정 하 는 속성 으로 인터넷 에서 볼 수 있다.STEP 6: quartz 설정job. xml (타이머 의 속성 을 주로 설정 합 니 다)
<?xml version="1.0" encoding="GBK"?>
<quartz>
<!-- 1 -->
<job>
<job-detail>
<name>getDate</name><!-- ( )-->
<group>job</group>
<job-class>com.timer.util.TimerTask</job-class><!-- getDate() ( )-->
</job-detail>
<trigger>
<cron>
<name>t1</name>
<group>job</group>
<job-name>getDate</job-name>
<job-group>job</job-group>
<cron-expression>0 0/1 * * * ?</cron-expression><!-- ( )-->
</cron>
</trigger>
</job>
</quartz>
STEP 7: 타이머 가 좋 은 지 두 가지 유형 으로 테스트 합 니 다.
public class TimerTask implements Job {
private static Logger logger = Logger.getLogger(TimerTask.class);
public void execute(JobExecutionContext arg0) throws JobExecutionException {
try {
TimerOperation.getDate();
} catch (Exception ex) {
logger.info(ex.getMessage());
}
}
}
public class TimerOperation {
private static Logger logger = Logger.getLogger(TimerOperation.class);
public static void getDate()
{
String strCurrentDateTime = "";
Date currentDateTime = new Date();
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
strCurrentDateTime = formatter.format(currentDateTime);
logger.info(" "+strCurrentDateTime);
}
}
이 두 가지 종 류 를 쓰 면 타이머 가 자신 이 시간 을 정 하 는 방법 을 직접 호출 할 수 없다 는 것 을 알 수 있다. 먼저 job 를 실현 하 는 인 터 페 이 스 를 쓴 다음 인 터 페 이 스 를 실현 하 는 execute () 방법 에서 자신 이 미리 작성 한 시간 임 무 를 호출 해 야 한다.타이머 하나 면 돼.프로젝트 를 실행 하고 1 분 을 기다 리 면 콘 솔 이 나타 납 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Spring 통합 Quartz의 간단한 구성 방법그러나 실제 업무에서 직접 그것을 사용하는 것은 매우 드물다.일반적으로spring-quartz 구성 요소를 사용하며, 직접 설정을 통해spring 프레임워크를 자동으로 조립합니다 다음은spring 프레임워크 통합qu...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.