문제

Java의 ScheduleDexecutorService는 고정 된 간격 또는 고정 지연으로 작업을 반복하는 데 매우 편리합니다. 기존 ScheduledExecutorService와 같은 것이 있는지 궁금해하는 것이 궁금합니다. 이는 "매일 오전 10시 에이 작업이 시작되기를 원합니다."

나는 당신이 Quartz로 이것을 달성 할 수 있다는 것을 알고 있지만, 가능하다면 그 라이브러리를 사용하지 않을 것입니다 (훌륭한 라이브러리이지만 몇 가지 이유로 의존성이 없을 것입니다).

도움이 되었습니까?

해결책

당신은 사용할 수 있습니다 시간제 노동자 수업. 구체적으로, ScheduLeatFixEdrate (Timertask Task, Date Firsttime, Long Perioan). 특정 날에 오전 10시에 시작하여 24 시간마다 반복 할 작업을 설정할 수 있습니다.

다른 팁

조금 더 검색이 나타났습니다 cronexecutorservice HA-JDBC에서. 흥미롭게도, 그것은 석영에 대한 의존성을 가지고 있습니다. cronexpression 수업, 그러나 그게 다야. 그건 너무 나쁘지 않습니다.

업데이트 : 깨진 링크를 새 버전을 가리키기 위해 수정했지만 더 이상 유일한 종속성인지 모르겠습니다.

ThreadPoolTaskScheduler, 외부 스레드 관리가 필요하지 않을 때마다 사용할 수 있습니다. 내부적으로, 그것은 a ScheduleDexecutorService 사례. ThreadPooltaskScheduler 봄을 구현합니다 taskexecutor 인터페이스도 단일 인스턴스를 비동기 실행 및 예약 및 잠재적으로 되풀이하는 실행에 사용할 수 있도록 인터페이스.

Crontrigger ()가 cronexpression을 취하는 곳 http://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/scheduling/support/cronsequencegenerator.html

이 솔루션에 대한 자세한 내용은 스프링 문서를 참조하십시오. https://docs.spring.io/spring/docs/current/spring-framework-reference/html/scheduling.html

import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler;
import org.springframework.scheduling.support.CronTrigger;
import java.util.Date;

public class CronTriggerSpringTest{
public static void main(String args[]){
    String cronExpression = "0/5 * * * * *";
    ThreadPoolTaskScheduler scheduler = new ThreadPoolTaskScheduler();
    scheduler.initialize();
    scheduler.schedule(new Runnable() {
        @Override
        public void run() {
            System.out.println("Hello Date:"+new Date());
        }
    }, new CronTrigger(cronExpression));
}
}

scheduleatfixedrate를 사용하면 지연이 제공됩니다. 따라서 지연은 오전 10시에 차이가 될 수 있으며 기간은 24 시간입니다. 타이머를 사용하더라도 약간 표류 할 수 있으므로 매번 적절한 지연으로 예약 외부 서비스 서비스에 추가되는 작업을 예약하는 것입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top