85.4. 대기 전략
대기 전략은 현재 다음 교환이 게시되기를 기다리는 소비자 스레드에서 수행하는 대기 유형에 영향을 미칩니다. 다음 전략을 선택할 수 있습니다.
이름 | 설명 | 권장 사항 |
---|---|---|
차단 | 문제 발생 시 대기 중인 소비자에 대해 잠금 및 조건 변수를 사용하는 차단 전략입니다. | 이 전략은 처리량과 대기 시간이 짧은 경우 CPU 리소스만큼 중요하지 않을 때 사용할 수 있습니다. |
잠자기 | 소비자는 처음에 회전하고, Thread.yield()를 사용하고, 결국 OS와 JVM의 최소 수를 사용하면 소비자가 장벽을 기다리는 동안 허용할 수 있습니다. | 이 전략은 성능과 CPU 리소스 간에 적절히 손상됩니다. 대기 시간 급증은 유휴 기간 후에 발생할 수 있습니다. |
BusySpin | 문제 발생 시 대기 중인 소비자를 위해 사용량이 많은 스핀 루프를 사용하는 busy Spin 전략입니다. | 이 전략은 CPU 리소스를 사용하여 대기 시간 지터를 도입할 수 있는 syscall을 방지합니다. 스레드를 특정 CPU 코어에 바인딩할 수 있는 경우 사용하는 것이 가장 좋습니다. |
yielding | 처음 회전한 후 장벽을 기다리는 소비자를 위해 Thread.yield()를 사용하는 전략을 생성합니다. | 이 전략은 대기 시간이 크게 급증하지 않고 성능과 CPU 리소스 간에 적절합니다. |