• XE 가리기보기
  • 파워볼게임 가리기보기
  • 엑셀_PDF게시판2 가리기보기

Thread.sleep () VS Executor.scheduleWithFixedDelay ()

목표 : 특정 코드를 한 번씩 실행하십시오. 질문 : 성능면에서 다음 중 중요한 차이가 있습니까? while(true) { execute(); Thread.sleep(10 * 1000); } 과 executor.scheduleWithFixedDelay(runnableWithoutSleep, 0, 10, TimeUnit.SECON...

Thread.sleep () VS Executor.scheduleWithFixedDelay ()

목표 : 특정 코드를 한 번씩 실행하십시오. 질문 : 성능면에서 다음 중 중요한 차이가 있습니까? while(true) { execute(); Thread.sleep(10 * 1000); } 과 executor.scheduleWithFixedDelay(runnableWithoutSleep, 0, 10, TimeUnit.SECON...

목표 : 특정 코드를 한 번씩 실행하십시오.

질문 : 성능면에서 다음 중 중요한 차이가 있습니까?

while(true) {

    execute();

    Thread.sleep(10 * 1000);

}

 

executor.scheduleWithFixedDelay(runnableWithoutSleep, 0, 10, TimeUnit.SECONDS);
 

 

물론, 후자의 선택은 더 정결합니다. 그러나 Thread.sleep ()에 작별 인사하기 위해 레거시 코드를 리팩토링하는 데 며칠을 투자하는 모험에 착수해야하는지 여부를 알고 싶습니다.

업데이트 :이 코드는 super / mega / hyper 하이로드 환경에서 실행됩니다.

 

  • 부제목
  • 본문 제목 글꼴
  • 본문 커버 높이
  • label
  • starate
  • coverimage
  • vidmp4
  • vidwebm
웹기프트 by
웹기프트
 관리그룹 
댓글1
로그인 후 댓글 작성이 가능합니다.
로그인 후 댓글 작성이 가능합니다.
    1
  • lkm_webgift
    lkm_webgift 2018.12.29 00:41

    다양한 시나리오가 있습니다.

    1. Timer는 지속적으로 업데이트되는 작업 큐를 생성합니다. 타이머가 완료되면 즉시 가비지 수집되지 않을 수 있습니다. 더 많은 타이머를 만들면 힙에 더 많은 개체 만 추가됩니다. Thread.sleep ()은 스레드를 일시 중지하기 때문에 메모리 오버 헤드가 매우 낮습니다.
    2. Timer / TimerTask는 또한 작업의 실행 시간을 고려하므로 좀 더 정확합니다. 그리고 그것은 교착 상태를 피하는 것과 같은 멀티 스레딩 문제를보다 잘 처리합니다.
    3. 스레드가 예외를 잡아 죽게되면 문제가됩니다. 하지만 TimerTask가 처리합니다. 이전 실행 실패와 관계없이 실행됩니다.
    4. TimerTask의 장점은 사용자의 의도를 훨씬 잘 표현 (코드 가독성)하고 cancel () 기능을 이미 구현 한 것입니다.
검색어 입력
전체검색, 사이트 전체를 검색합니다.