>  기사  >  Java  >  Java 예약 작업에 대한 설명

Java 예약 작업에 대한 설명

巴扎黑
巴扎黑원래의
2017-07-20 13:27:061427검색

1. 소개

Java에서는 Timer와 TimerTask라는 두 가지 클래스로 전체 예약 작업을 완료해야 합니다. 타이머는 스레드가 향후 백그라운드 스레드에서 실행될 작업을 예약하는 데 사용하는 도구인 타이머와 같은 API에 정의되어 있습니다. 작업은 한 번 실행되거나 주기적으로 반복되도록 예약할 수 있습니다. TimerTask별: 일회성 또는 반복 실행을 위해 타이머에 의해 예약된 작업입니다. Timer는 백그라운드 스레드에서 지정된 작업을 계획하고 실행하는 데 사용되는 타이머 도구인 반면 TimerTask는 추상 클래스이며 해당 하위 클래스는 Timer에 의해 예약될 수 있는 작업을 나타냅니다.

Timer 클래스

Timer 클래스에는 4가지 구성 메서드가 제공됩니다. 각 구성 메서드는 동시에 타이머 스레드를 시작합니다. 동시에 Timer 클래스는 여러 스레드가 외부 동기화 없이 단일 Timer 개체를 공유할 수 있도록 보장합니다. Timer 클래스는 스레드로부터 안전합니다. 그러나 각 Timer 개체는 모든 타이머 작업을 순차적으로 실행하는 데 사용되는 단일 백그라운드 스레드에 해당하므로 일반적으로 스레드 작업 실행에 소요되는 시간은 매우 짧지만 특수한 상황으로 인해 타이머 작업 실행 시간이 너무 길면 타이머의 작업 실행 스레드를 "독점적으로" 점유하고 모든 후속 스레드는 실행이 완료될 때까지 기다려야 합니다. 이로 인해 후속 작업의 실행이 지연되고 특정 상황에서 이러한 작업이 쌓이게 됩니다. 나중에 분석하세요.

프로그램이 타이머를 초기화하면 예약된 작업은 우리가 설정한 시간에 따라 실행됩니다. 타이머는 다음과 같이 다양한 상황에 적응할 수 있는 여러 오버로딩 방법이 있는 일정 방법을 제공합니다. time): 지정된 시간에 지정된 작업이 실행되도록 예약합니다.

Schedule(TimerTask task, Date firstTime, long period): 지정된 시간에 반복 고정 지연 실행을 시작하도록 지정된 작업을 예약합니다.

Schedule(TimerTask 작업, 긴 지연): 지정된 지연 후에 지정된 작업의 실행을 예약합니다.

Schedule(TimerTask 작업, 긴 지연, 긴 기간): 지정된 지연부터 시작하여 반복되는 고정 지연 실행을 위해 지정된 작업을 정렬합니다.

동시에, ScheduleAtFixedRate 메소드도 오버로드됩니다. ScheduleAtFixedRate 메소드는 일정과 동일하지만 초점이 다릅니다. 차이점은 나중에 분석하겠습니다.

  scheduleAtFixedRate(TimerTask task, Date firstTime, long period): 지정된 작업이 지정된 시간에 반복 고정 속도 실행을 시작하도록 예약합니다.

  scheduleAtFixedRate(TimerTask task, long Delay, long period): 지정된 지연 이후 반복되는 고정 속도 실행을 시작하도록 지정된 작업을 정렬합니다.

TimerTask

TimerTask 클래스는 일회성 또는 반복 작업을 위해 Timer에서 예약하는 추상 클래스입니다. 해당 타이머 작업에서 수행할 작업을 수행하는 데 사용되는 추상 메서드 run() 메서드가 있습니다. 따라서 각 특정 작업 클래스는 TimerTask를 상속한 다음 run() 메서드를 재정의해야 합니다.

또한 두 가지 비추상 메서드가 있습니다.

boolean cancel(): 이 타이머 작업을 취소합니다.

longcheduledExecutionTime(): 이 작업의 가장 최근 실제 실행의 예약된 실행 시간을 반환합니다.

2. 예:


Naims_task.xml

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
  xmlns:p="http://www.springframework.org/schema/p"
  xmlns:task="http://www.springframework.org/schema/task"
  xmlns:context="http://www.springframework.org/schema/context"
  xmlns:aop="http://www.springframework.org/schema/aop" 
  xsi:schemaLocation="http://www.springframework.org/schema/beans  
   
   http://www.springframework.org/schema/tx/spring-tx-4.0.xsd  
   http://www.springframework.org/schema/jee/spring-jee-4.0.xsd  
   http://www.springframework.org/schema/context/spring-context-4.0.xsd  
   http://www.springframework.org/schema/aop/spring-aop-4.0.xsd  
   http://www.springframework.org/schema/task/spring-task-4.0.xsd"><task:annotation-driven /> <!-- 定时器开关-->
 
  <bean id="myTask" class="com.wisoft.jazwfw.convenienceServices.controller.ConvenienceServicesController"></bean> 
 
  <task:scheduled-tasks> <!-- 这里表示的是每天23点59分执行一次 --><task:scheduled ref="myTask" method="getPubService" cron="0 59 23 * * ?" /> <!-- 这里表示的是每隔十秒执行一次 --><!-- <task:scheduled ref="myTask" method="print" cron="*/10 * * * * ?"/>  -->
  </task:scheduled-tasks> 
 
  <!-- 自动扫描的包名 -->
  <context:component-scan base-package="com.wisoft.jazwfw.convenienceServices.controller" /> 
  </beans>
그런 다음 Naims_main.xml에

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"><beans><import resource="spring/Naims_ws.xml" /><import resource="spring/Naims_bo.xml" /><import resource="spring/Naims_dao.xml"/><import resource="spring/Naims_params.xml"/><import resource="spring/Naims_task.xml"/></beans>
을 소개합니다.

위 내용은 Java 예약 작업에 대한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.