2010-04-07 5 views

답변

2

자고있는 어떤 양이라도 적어도 yield()를 호출하는 것과 기능상으로 동등 할 것이라고 나는 기대할 수 있습니다. 따라서 "무의미한"지점이 결코 없습니다. 운영 체제가 스레드로 돌아갈 때까지 기다리는 오버 헤드가 작은 절전 시간보다 길기 때문에 작은 값이 본질적으로 구분할 수없는 지점이 있습니다. 아마도 5-10 범위의 어딘가에서 발생하지만 물론 OS 별 일 것입니다.

2

일반화가 어렵고 특정 문제에 따라 달라질 수 있습니다. 그러나 스레드를 관리하는 데 수면을 사용하지 않을 것입니다. 스레드를 Executor에 넣고 관리 할 수 ​​있습니다. PriorityQueue를 사용하여 작업을 정렬 할 수도 있습니다.

+0

실행자가 스레드가 유휴 상태 일 때 예측할 수 있다고 생각하지 않습니까? 또는 – someguy

2

심지어 IIRC Thread.sleep (0)은 스레드를 양보하여 같거나 높은 우선 순위를 가진 다른 스레드가 실행되도록합니다.

스레드 우선 순위에 달려있다. Thread.sleep은 스레드를 효율적으로 생성하고 절전 시간 동안 가장 낮은 우선 순위를 설정한다는 점을 이해했다.

다른 사람들도 언급했듯이 스레드를 수동으로 예약하지 않아야합니다. 그러나 뮤텍스를 공유 한 경우이를 해제 한 다음 Thread.sleep을 수행하여 스레드 잠금 상황을 해결하는 것이 좋습니다.

+0

이것은 예약과 관련이 없습니다. 그것은 자원을보다 효율적으로 처리하는 것입니다. – someguy

관련 문제