타이머 구현, 자바 타이머 타이머 와 Quartz 소개 및 Spring 타이머 설정
package org.lzstone.action
public class FinanceAction extends Thread{
private Date date;
public void run{
try{
while(true){
Thread.sleep((int)(Math.random()*1000));
date = new Date();
//
}
}catch(Exception e){
e.printStackTrace();
}
}
}
자신 이 타 이 머 를 실현 하 는 작업 은 매우 복잡 합 니 다. 메모리 사용량 이 너무 많 지 않 으 면 시스템 이 Over 되 기 때문에 정시 에 실행 하거나 반복 하 는 작업 을 처리 합 니 다.타 이 머 는 좋 은 선택 입 니 다. 2. 자바 에서 흔히 볼 수 있 는 타 이 머 1) 자바. util. Timer 를 통 해 2) OpenSymphony 커 뮤 니 티 가 제공 하 는 Quartz 를 실현 합 니 다.
package org.lzstone.action
import java.util.TimeTask
public class LzstoneTimeTask extends TimeTask{
public void run(){
//
}
}
2) 정시 작업 을 실행 하고 정시 작업 을 실행 하 는 것 은 두 가지 방식 으로 나 뉜 다. 2.1) 프로그램 은 예시 코드 를 직접 시작한다.
package org.lzstone.action
public class LzstoneMain{
.......
public void run(){
//
//
Timer timer = new Timer();
:
new LzstoneTimeTask()- 。
0- , 。
1*1000- , 。
timer.schedule(new LzstoneTimeTask(),0,1*1000);
}
}
2.2) 웹 감청 방식 예시 코드:
package org.lzstone.action
public class LzstoneMain implements ServletContextListener{
private Timer timer = null;
// , ,
public void contextInitialized(ServletContextEvent event){
timer = new Timer();
timer.schedule(new LzstoneTimeTask(),0,1*1000);
}
// ,
public void contextDestroyed(ServletContextEvent event){
// , run , 。
timer.cancel();
}
}
웹. xml 설정
<listener>
<listener-class>
org.lzstone.action.LzstoneMain
listener-class>
listener>
package org.lzstone.action
public class LzstoneTimeTask implements Job{
public void execute(JobExecutionContext context) throws JobExecutionException{
//
}
}
2) 정시 작업 을 실행 하고 정시 작업 을 실행 하 는 것 은 두 가지 방식 으로 나 뉜 다. 2.1) 프로그램 이 직접 시작 하여 작업 스케줄 러 를 만 들 고 해당 하 는 작업 계획 예제 코드 를 설정 합 니 다.
package org.lzstone.action
public class LzstoneMain{
private static Scheduler sched;
public static void run() throws Exception{
// LzstoneTimeTask
JobDetail jobDetail = new JobDetail("lzstoneJob",sched.DEFAULT_GROUP,LzstoneTimeTask.class);
//
CronTrigger trigger = new CronTrigger("lzstoneTrigger","lzstone","0 0 12 * * ?");
//0 0 12 * * ? 12
sched = new org.quartz.impl.StdSchedulerFactory().getScheduler();
sched.scheduleJob(jobDetail,trigger);
sched.start();
}
//
public static void stop() throws Exception{
sched.shutdown();
}
}
/ / 실행
public class Main{
.............
public void run(){
LzstoneMain.run();
}
............
}
2.2) 웹 감청 방식 예시 코드:
package org.lzstone.action
public class LzstoneMainListener implements ServletContextListener{
private Timer timer = null;
// , ,
public void contextInitialized(ServletContextEvent event){
LzstoneMain.run();
}
// ,
public void contextDestroyed(ServletContextEvent event){
LzstoneMain.stop();
}
}
웹. xml 설정
<listener>
<listener-class>
org.lzstone.action.LzstoneMainListener
listener-class>
listener>
5. 타이머 방식 에 비해 타 이 머 를 실현 하고 원리 가 간단 하 며 실현 이 편리 하 며 간단 한 임 무 를 수행 하 는 데 편리 하 다. 부족 한 점 은 집행 시간 을 확정 할 수 없고 의존성 이 비교적 강하 기 때문에 반드시 지 정 된 Quartz 방식 을 계승 하여 타 이 머 를 실현 해 야 한다. 편리 하고 명확 하 게 시동 시간 을 지정 해 야 한다. 타 이 머 는 비교적 유연 하고 복잡 한 타 이 머 를 실현 하기 쉽다.부족 한 점 은 특정한 인 터 페 이 스 를 실현 하고 그 프레임 워 크 를 불 러 오 는 두 가지 방식 이 각각 장단 점 이 있 으 며 특정한 상황 에서 그 특징 에 따라 선택 하여 사용 할 수 있다 는 것 이다.6. Spring 정시 퀘 스 트 Spring 정시 퀘 스 트 는 Timer 와 Quartz 에 지원 을 제공 하고 절차 가 기본적으로 같 습 니 다. 먼저 Spring 이 Timer 에 대한 지원 1.1 을 설정 하여 정시 퀘 스 트 클래스 를 만 듭 니 다.
package org.lzstone.action
import java.util.TimeTask
public class LzstoneTimeTask extends TimeTask{
public void run(){
//
}
}
1.2 정시 작업 클래스 를 등록 하고 작업 계획 과 작업 스케줄 러 를 설정 하여 프로젝트 의 WEB - INF 아래 TimerConfig. xml 파일 을 만 듭 니 다 (일반적으로 applicationContext. xml 라 고 합 니 다)
<beans>
<bean>
<bean id="lzstoneTimeTask" class="org.lzstone.action.LzstoneTimeTask"/>
<bean id="taskInfo" class="org.springframework.scheduling.timer.ScheduledTimerTask">
<property name="delay">
<value>3000value>
property>
<property name="period">
<value>4000value>
property>
<property name="timerTask">
<ref local="lzstoneTimeTask"/>
property>
bean>
<bean id="timerFactory" class="org.springframework.scheduling.timer.TimerFactoryBean">
<property name="scheduledTimerTasks">
<list>
<ref local="taskInfo"/>
........
list>
property>
bean>
beans>
1.3 웹 프로젝트 의 시작 설정
<context-param>
<param-name>contextConfigLocationparam-name>
<param-value>/WEB-INF/TimerConfig.xmlparam-value>
context-param>
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
listener-class>
listener>
Spring 의 Quartz 지원 2.1 을 설정 하여 정시 작업 클래스 를 만 듭 니 다.
package org.lzstone.action
public class LzstoneQuartzTask{
public void execute(){
//
}
}
2.2 정시 작업 클래스 를 등록 하고 작업 계획 과 작업 스케줄 러 를 설정 하여 프로젝트 의 WEB - INF 아래 에 QuartzConfig. xml 파일 을 만 듭 니 다 (일반적으로 applicationContext. xml 라 고 합 니 다)
<beans>
<bean>
<bean id="lzstoneQuartzTask" class="org.lzstone.action.LzstoneQuartzTask"/>
<bean id="taskInfo" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject">
<ref local="lzstoneQuartzTask"/>
property>
<property name="targetMethod">
<value>executevalue>
property>
bean>
<bean id="quartzTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail">
<ref local="taskInfo"/>
property>
<property name="cronExpression">
<value>0 0 12 * * ?value>
property>
bean>
<bean id="registerQuartz" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref local="quartzTrigger"/>
list>
property>
bean>
beans>
2.3 웹 프로젝트 의 시작 설정
<context-param>
<param-name>contextConfigLocationparam-name>
<param-value>/WEB-INF/QuartzConfig.xmlparam-value>
context-param>
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
listener-class>
listener>
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.