Java Thread의 sleep()메서드와 우연

  • 스레드를 일정 시간동안 Suspend(TIMED_WAIT 상태)시켰다가 시간이 지나면 자동으로 Resume 되어 RUNNABLE 상태로 전환
    • Suspend 상태는 3종류
      • BLOCKED - synchronized
      • WAITING - wait()
      • TIMED_WAITING - sleep()
  • 보통 설정한 시간 보다 더 많은 시간이 흐르며 정확성이 떨어짐
  • 우연에 맡기는 코드를 만드는 주범
  • sleep()사용하여 실행 순서를 제어하는 로직을 작성했을때 시간차를 크게 설정안하면 실행마다 실행 순서가 달리지는 현상이 발생함을 실습해보면 알 수 있음

참고

자바 스레드 상태와 생명 주기