스레드 수면 해결 방법과 sleep()의 단순한 해결 방법에 대해 자세히 알고 싶습니다.자바 스레드 수면 해결 및 동기화 된 블록을 기다리는 중
나는 그것의 운영 체제에 의해 정의 된 알고 Windows에서 일반적으로 15ms. 나는이 문제를 최근에 조사하여 확인할 수는 없었지만, 15ms가 OS에 의해 반복되고 모든 스레드에 대해 '전역'이라는 것을 모호하게 상기합니다. 즉, 스레드가 잠자기 할 수있는 최소 시간 인 15ms가 아니라 오히려 최대 수면 (1). 그게 맞습니까? 모든 운영 체제에서 동일합니까 (기간 초과)?
이 문제가 발생할 수있는 상황을 생각할 수 없지만 스레드의 가짜 깨우기가 항상이 수면주기의 동작 지점에서 발생합니까, 아니면 언제든지 발생할 수 있습니까?
동기화 된 블록에서 대기중인 스레드가 효과적으로 잠을 자며 (1) 각주기마다 잠금을 확인합니까? 아니면 블록을 종료 한 스레드가 대기중인 스레드를 즉시 깨 웁니까? 모든 운영 체제에서 동일합니까?
스레드가 wait() 후 알림() 될 때, 잠금을 기다리는 동안 또는 위와 같은 방식으로 처리됩니까?
15ms 루프가 성능 관점에서 관련성이있는 다른 시간이 있습니까?
감사합니다. 이렇게하면 많은 문제가 해결됩니다. 나는 sleep()의 또 다른 일반적인 사용이 CPU를 녹이기까지 바쁜 루프를 끊는다는 것을 알아야한다. 이 경우 15ms는 루프가 초당 ~ 66 회만 실행되므로 응용 프로그램에 따라 사람이 눈에 띄는 차이가 발생할 수 있음을 의미합니다. – Numeron
@ Numeron - 더 큰 팬/방열판이 필요합니다. 아니요. 실제로 사용한 모든 상자는 평면으로 달릴 수 있습니다. 팬 속도가 CPU가 완전히로드 된 모든 코어로 올라가는 것을들을 수는 있지만 아무런 문제가 발생하지 않습니다. –
데스크톱은 문제가 없지만 랩톱 컴퓨터에서는 심각한 문제가 될 수 있습니다. – Numeron