java 자바 jframe - 스케줄 스프링의 고정 속도와 고정 지연 사이의 차이점은 무엇입니까?





2 Answers

"fixedRate": 다음 실행을 시작하기 전에 이전 실행 시작으로부터 X 밀리를 기다립니다. 현재 실행이 'fixedRate'간격을 초과하면 다음 실행은 대기되지만 다음 실행 만 대기합니다. 그것은 일련의 대기중인 실행을 생성하지 않습니다.

private static int i = 0;

@Scheduled(initialDelay=1000, fixedRate=1000)
public void testScheduling() throws InterruptedException {
    System.out.println("Started : "+ ++i);
    Thread.sleep(4000);
    System.out.println("Finished : "+ i);
}

산출:

시작 : 1
완료 : 1 초 / 4 초 후
시작 : 2 // 고정 속도로 지정된대로 1 초 동안 대기하지 않고 즉시 //
완료 : 2 초 후 / 4 초 후
등등

"fixedDelay": 다음 실행을 시작하기 전에 이전 실행의 끝에서 X 밀리를 기다립니다. 현재 실행이 얼마나 걸리는지 상관 없지만 현재 실행의 종료 시간에 'fixedDelay'간격을 추가 한 후 다음 실행이 시작됩니다. 다음 실행을 대기열에 넣지 않습니다.

private static int i = 0;

@Scheduled(initialDelay=1000, fixedDelay=1000)
public void testScheduling() throws InterruptedException {
    System.out.println("Started : "+ ++i);
    Thread.sleep(4000);
    System.out.println("Finished : "+ i);
}

산출:

시작 : 1
Finished : 1 // 4 초 후 시작 : 2 // fixedDelay에 지정된대로 1 초 대기 완료 : 2 // 4 초 후 시작 : 3 // 1 초 후
등등

새로 고침 패널

나는 봄을 사용하여 예정된 작업을 구현하고 있으며 2 가지 유형의 설정 시간이 예정된 시간부터 다시 작동한다는 것을 알고 있습니다. 이 두 가지 유형의 차이점은 무엇입니까?

 @Scheduled(fixedDelay = 5000)
    public void doJobDelay() {
        // do anything
    }
  @Scheduled(fixedRate = 5000)
    public void doJobRate() {
        // do anything
    }



고정 지연 : 특히 마지막 실행이 완료 될 때 다음 실행 시간을 제어합니다.

Fixed Rate : 마지막 호출이 여전히 실행 중일지라도 주기적으로 Spring이 작업을 실행하도록합니다.




Related