타이머 의 실현, 자바 타이머 타이머 와 Quartz 의 비교

6562 단어 quartz
이것 은 타이머 에서 찾 은 두 번 째 글 주소 입 니 다.http://blog.csdn.net/zlxdream815/article/details/8177574 타이머(이것 은 비교적 간단 합 니 다. timer 는 java. util 패키지 의 다음 클래스 입 니 다) 더 잘 알 기 위해 다음 과 같은 예 를 썼 습 니 다.
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 분 을 기다 리 면 콘 솔 이 나타 납 니 다.

좋은 웹페이지 즐겨찾기