84.4. 대기 전략

대기 전략은 현재 다음 교환이 게시되기를 기다리는 소비자 스레드가 대기 중인 대기 유형입니다. 다음 전략을 선택할 수 있습니다.

이름설명조언

차단

장벽을 기다리는 소비자에 대해 잠금 및 조건 변수를 사용하는 차단 전략

이 전략은 CPU 리소스만큼 처리량과 대기 시간이 중요하지 않은 경우 사용할 수 있습니다.

sleep

처음에 회전하는 유휴 전략은 Thread.yield()를 사용하고 결국 OS와 JVM의 최소 나노 수에 대해 소비자가 장벽을 기다리는 동안 사용할 수 있습니다.

이 전략은 성능과 CPU 리소스를 손상시킬 수 있습니다. 대기 시간 스파이크는 조용한 기간 후에 발생할 수 있습니다.

BusySpin

장벽을 기다리는 소비자에 대해 바쁜 스핀 루프를 사용하는 busy Spin 전략.

이 전략에서는 CPU 리소스를 사용하여 latency jitter를 도입할 수 있는 syscall을 방지합니다. 스레드를 특정 CPU 코어에 바인딩할 수 있는 경우 가장 적합합니다.It is best used when threads can be bound to specific CPU cores.

yielding

처음에 회전한 후 장벽을 기다리는 소비자에 Thread.yield()를 사용하는 생성 전략.

이 전략은 상당한 대기 시간 급증이 발생하지 않고 성능과 CPU 리소스를 손상시킬 수 있습니다.