2017-09-10 10 views
0

10 일 (시스템 초기화에서), 20 일 (시스템 초기화에서) 및 매월 1 일 후에 보고서를 보내는 newSingleThreadScheduledExecutor로 집행자를 예약하려고합니다. 매일 실행되는 newSingleThreadScheduledExecutor를 사용하여 오늘이 10 일 후인지 확인하려고 시도했습니다. 20 일 등 하지만 일부 집행자와 함께이 문제를 해결하는보다 세련된 방법이 있다고 생각합니다. 코드를 어떻게 개선 할 수 있습니까?실행자가 다른 간격으로 일정을 잡습니다.

스케줄러 :

scheduler.scheduleWithFixedDelay(() -> { 
     try { 
      createReport(); 
     } catch (Exception e) { 
      log.error("Error to create engagement report", e); 
     } 
    }, 1, 1, TimeUnit.DAYS); 

과 createReport 기능에

- 나는 날짜를 확인합니다.

감사합니다. 나는 다음 보고서는 나가서 일정을 업데이트해야합니다-CALC를 재 -

scheduler.schedule(createTask , nextDayOfTask, TimeUnit.DAYS); 

그래서 때마다 나는 createTask에 도착 :

+0

http://www.quartz-scheduler.org/documentation/quartz-2.x/tutorials/에서 'Quartz'와 같은 라이브러리를 살펴보십시오. –

답변

0

결국, 나는 생성자에서 초기화하는 것을 ScheduledExecutorService를 일정을 사용합니다.

public Runnable createTask = new Runnable() { 
    @Override 
    public void run() { 
     // Do What Ever You Need 
     scheduler.schedule(this, nextDayOfTask, TimeUnit.DAYS); 
    } 
};