4
take()
method을 사용하여 BlockingQueue
의 요소에 대해 스레드를 빠는 것이 중단 된 경우를 제외하고 요소를 사용할 수있을 때까지 기다리는 것을 이해합니다.성능 향상을 위해 BlockingQueue.take()에서 스레드를 명시 적으로 깨워 야합니까?
나는이 두 가지 질문 :
I)가 스레드가 자동으로 깨어 업 빨리 요소를 사용할 수있게하거나 지연 (즉, 스레드를 확인 후 자체가)이있는 한?
ii) 지연이있는 경우 스레드를 깨우는 것이 의미가 있습니까 (예 : 명시 적으로 중단하여)? 대기 시간과 성능에 대해 생각하고 있습니다.
@DownVoter : 의견을 남겨주세요. – MasterCassim
나는 downvoter가 (아니, 나 아니야 :)라고 추측 할 수 있습니다. '지연이 없습니다'라는 것에 반대하고 있습니다. 일정 지연이있을 수 있습니다. 소비자 스레드는 제작자가 항목을 게시 할 때 준비가되지만 소비자보다 우선 순위가 높은 준비/실행 스레드 세트가 코어 수와 같거나 더 많은 요소를 갖는 경우 즉시 실행되지 않습니다. 어느 쪽이든, 인터럽트 또는 스레드와 같은 다른 동작은 아무 것도 변경하지 않습니다. 지연을 최소화하는 유일한 방법은 소비자가 충분히 높은 우선 순위를 유지하는지 확인하는 것입니다. 설명해 주셔서 감사합니다. –
내가 속도를 올릴 수있는 추가적인 지연을 언급하고 있었기 때문에 나는 나의 대답을 편집했다. – MasterCassim