2017-11-17 9 views
-1

주기적으로 호출되는 메소드가 있습니다. 매일 오전 11시에 호출합니다.Java에서 주기적으로 태스크를 실행하는 더 좋은 방법

public void loadProduct() { 
PropertyConfigurator.configure("log4j.properties"); 
try { 
    service.create(product); 
    logger.info("Creation started"); 
} catch (Exception e) { 
    // Log Exception 
    logger.error(e); 
} 
} 

나는 거의 Spring 컨텍스트의 도움으로이를 달성하는 방법을 알아 낸 :

<task:scheduler id="scheduler" pool-size="1"/> 

<task:scheduled-tasks scheduler="scheduler"> 
    <task:scheduled ref="productTask" method="loadProduct" cron="0/30 * * * * *"/> 
</task:scheduled-tasks> 

하지만 어떻게가 24 시간마다 시작하는 작업을 예약은 홈페이지에서 간단한 방법입니다 매일 오전 11 시까 지?

Java 코드에서이를 수행 할 수있는 방법이 있습니까?

+0

매 x 초 (또는 서버의 시간)를 확인하는 타이머 또는 일부 데몬 스레드를 만들 수 있습니다. – Stultuske

+1

cron 작업을 실행할 수있는 유틸리티가있는 것 같습니다. 질문의 핵심은 cron 작업을 작성하는 방법을 배우는 것입니다. cron 작업은 man 페이지에서 더 잘 배울 것입니다. – Makoto

+0

http://corntab.com/을 사용할 수 있습니다. crontab이 아니라면 스프링 스케줄러에 초가 있다고 생각하십시오. 따라서 crontab에는 5 (*), 봄 스케줄러에는 6 일 – Nonika

답변

2

하지만 매일 오전 11시에 24 시간마다 작업을 시작하도록 예약하는 방법은 무엇입니까?

이것은 cron 표현식을 사용하여 얻을 수 있습니다. 0 0 11 * * *.

또는 Java 코드에서이를 수행 할 수있는 방법이 있습니까?

예, 예를 들어, Scheduled (Spring Framework 5.0.1.RELEASE API) 주석을 사용하여 :

@Scheduled(cron = "0 0 11 * * *", zone = "Europe/Moscow") 
public void run() { 
    // ... 
} 

추가 참조 :

  1. Integration: 7. Task Execution and Scheduling: 7.4. Annotation Support for Scheduling and Asynchronous Execution, Spring Framework Documentation합니다.
  2. Getting Started · Scheduling Tasks.