의문점 공부하기/📌 Java

📌 sleep()과 wait()의 차이는?!?!?

아리빠 2023. 7. 24. 17:31

sleep():

  • sleep()은 Thread 클래스에 정의된 메서드
  • 이 메서드는 스레드의 실행을 특정 시간 동안 일시적으로 중지시킨다
  • sleep()을 호출한 스레드는 CPU를 양보하고, 슬립하는 동안 시스템 리소스를 소비하지 않는다
  • 지정된 시간이 경과하면 스레드는 실행을 재개한다
  • sleep()은 프로그램에서 지연을 도입하거나 시간 기반 작업을 생성하는 데 유용..!
try {
    // 5초 동안 실행 일시 중지
    Thread.sleep(5000); 
} catch (InterruptedException e) {
    // 예외 처리
}

wait():

  • wait()은 Object 클래스에 정의된 메서드
  • 이 메서드는 스레드가 보유한 객체의 잠금을 일시적으로 해제한다
  • wait()을 호출한 스레드는 다른 스레드가 재개하도록 알릴 때까지 대기하거나 특정 시간이 경과할 때까지 대기한다
  • 대기하는 동안 스레드는 CPU를 양보하고 중단된 상태로 들어가며, 다른 스레드가 실행될 수 있다
  • wait()은 주로 다중 스레드 환경에서 동기화와 스레드 간 통신을 위해 사용된다
synchronized (lockObject) {
    try {
        // 알림을 받거나 10초 후에 타임아웃될 때까지 대기
        lockObject.wait(10000);
    } catch (InterruptedException e) {
        // 예외 처리
    }
}

▶ sleep()은 프로그램에서 지연을 도입하는 데 사용되고, wait()은 다중 스레드 환경에서 동기화와 스레드 간 통신을 위해 사용된다