::: Zany's Homepage ::: Zany Wiki | 사이트 통합 검색
 
 
 

[spring] Schedule fixedRate vs fixedDelay

게시판
JAVA
작성자
Zany
작성일
2019-07-03 16:50:25
읽은수
61
평점
   
표시옵션
HTML사용 | 자동BR태그 | 공백문자허용 | 가운데정렬 | 고정폭글꼴 | 자동URL링크 | 마우스선택
관련링크01
https://stackoverflow.com/questions/38842507/what-different-between-fixed-rate-and-fixed-delay-in-schedule-spring 
관련 링크로 기재한 스택오버플로우에는 잘못된 답변이 채택 되어 있다.
채택된 답변의 아래 답변 (nikhil7610 가 작성한) 이 정확한 답변이며, 그에 대한 설명은 아래와 같다.
● "fixedRate"  : waits for X millis from the start of previous execution before starting next execution.
    If current execution exceeds 'fixedRate' interval, the next execution is queued, but only next one.
    It will not create series of queued executions

    이전 작업의 "시작 시간" 을 기준으로 X 밀리초만큼 대기 후 다음 작업을 시작한다.
    이전 작업이 끝나지 않은 경우, 다음 작업은 큐에 들어가게 되며 이는 다음 1개의 작업에만 해당된다.
    (즉 이전 작업이 아무리 오래 걸려도 여러 개의 작업이 큐에 들어가지는 않는다)

● "fixedDelay" : waits for X millis from the end of previous execution before starting next execution.
    Doesn't matter how much time current execution is taking,
    the next execution is started after adding 'fixedDelay' interval to end time of current execution.
    It will not queue next execution.

    이전 작업의 "종료 시간" 을 기준으로 X 밀리초만큼 대기 후 다음 작업을 시작한다.
    이전 작업이 아무리 오래 걸린다 하더라도, 다음 작업은 이전 작업이 끝난 후 fixedDelay 시간만큼 대기하고 실행된다.
    fixedRate 작업과는 달리 다음 작업이 큐에 들어가진 않는다.


● fixedDelay
fixedDelay   : 1000 ms
thread sleep : 3000 ms
     seconds +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+---->
             0    1    2    3    4    5    6    7    8    9    10   11   13   14   15   16   
ITERATION #1 |--------------|
ITERATION #2                     |--------------|
ITERATION #3                                         |--------------|
ITERATION #4                                                             |--------------|
...

● fixedRate
fixedRate    : 1000 ms
thread sleep : 3000 ms
     seconds +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+---->
             0    1    2    3    4    5    6    7    8    9    10   11   13   14   15   16   
ITERATION #1 |----+---------|
                  ↑ queued next schedule
ITERATION #2                |----+---------|
                                 ↑ queued next schedule
ITERATION #3                               |----+---------|
                                                ↑ queued next schedule
ITERATION #4                                              |----+---------|
                                                               ↑ queued next schedule
...

● fixedRate
fixedRate    : 3000 ms
thread sleep : 2000 ms
     seconds +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+---->
             0    1    2    3    4    5    6    7    8    9    10   11   13   14   15   16   
ITERATION #1 |---------|
ITERATION #2                |---------|
ITERATION #3                               |---------|
ITERATION #4                                              |---------|
...


스케줄 작업을 이전 작업과 상관없이 지정된 주기가 되면 바로 수행하게 하려면
@Async + @Scheduled 어노테이션을 조합하여 스케줄이 비동기로 수행되게 하면 된다.
스케줄을 비동기로 수행하면, @EnableAsync 와 스레드 풀 설정이 되어 있다는 전체 하에 아래와 같이 동작한다.
● fixedRate + @Async
fixedRate    : 1000 ms
thread sleep : 3000 ms
     seconds +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+---->
             0    1    2    3    4    5    6    7    8    9    10   11   13   14   15   16   
ITERATION #1 |----+---------|
ITERATION #2      |----+---------|
ITERATION #3           |----+---------|
ITERATION #4                |----+---------|
...

● fixedDelay + @Async
fixedDelay   : 1000 ms
thread sleep : 3000 ms
     seconds +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+---->
             0    1    2    3    4    5    6    7    8    9    10   11   13   14   15   16   
ITERATION #1 |--------------|
ITERATION #2      |--------------|
ITERATION #3           |--------------|
ITERATION #4                |--------------|
...

게시물이 도움이 되셨으면 +1 을 눌러주세요~
 게시판 글 목록
No Subject Poster Hits Posted
14437 Zany 20 2019-10-01 10:57:58
Zany 61 2019-07-03 16:50:25
14282 Zany 363 2018-04-05 10:47:10
14281 Zany 359 2018-04-05 10:31:07
14237 Zany 1364 2017-12-01 15:18:39
14236 Zany 955 2017-12-01 14:49:07
14232 Zany 1127 2017-11-22 17:56:06
댓글 달기 - 이 글이 도움이 되었거나 흥미로우셨다면, 댓글을 남겨주세요.(^^)(oo)(__)
작성자
                       
 
zany.kr
  Copyright ⓒ 2002-2010 Zany's Programming Lab. All Rights Not Reserved.
temporary This Page loads on 0.016 Secs