각 스레드마다 고유 한 동시 대기열이있는 스레드가 여러 개 있으며 모든 스레드는 메시지를 검색하는 무한 루프를 실행합니다. 대기열 중 하나가 일정 기간 (몇 초 정도) 메시지를 수신하지 못하고 큰 버스트가 발생하여 처리 속도가 빨라질 수 있습니다.자바 동시성 - 차단해야합니까?
첫 번째 경우에 가장 적합한 것이 무엇인지 알고 싶습니다. 블로킹 큐를 사용하고 더 많은 입력이 있거나 Thread.yield()를 수행 할 때까지 스레드를 차단 하시겠습니까?
동시 스레드 수가 시간에 따라 증가 할 수 있기 때문에 주어진 시간에 가능한 한 많은 CPU 리소스를 사용하고 싶지만 메시지 처리가 뒤처지는 것을 원치 않습니다. 보장이 없습니다. 스레드가 yield()를 수행 할 때 실행을 위해 다시 스케줄 될 시점. 하드웨어, 운영체제 및 기타 요인들이 여기서 중요한 역할을한다는 것을 알고 있지만 Java (JVM) 관점에서 살펴보면 가장 최적의 것은 무엇입니까?
아니요, [disruptor] (https://github.com/LMAX-Exchange/disruptor) 라이브러리를 사용해보세요. 수확량에 의해서만 최고의 성능을 얻었습니다! – qinxian