의문점 공부하기/📌 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()은 다중 스레드 환경에서 동기화와 스레드 간 통신을 위해 사용된다