자바 소스 코드 분석 차단 대기 열 Array BlockingQueue 기능 안내
차단 대기 열 은 자바 개발 에 자주 사용 되 는 데이터 구조 입 니 다.우선 대열 을 막 는 역할 이 무엇 인지 살 펴 보 자.대기 열 을 막 는 역할 은 원본 코드 의 주석 에서 알 아 보 는 것 이 가장 뚜렷 하고 정확 하 다.아래 그림.
Array BlockingQueue 는 배열 로 이 루어 진 경계 차단 대기 열 입 니 다.FIFO 기능 제공.대기 열 머리 에 있 는 요 소 는 대기 열 에 가장 오래 있 는 요소 이 고, 대기 열 끝 에 있 는 요 소 는 대기 열 에 있 는 시간 이 가장 짧 은 요소 입 니 다.새 요 소 는 대기 열 끝 에 삽입 되 며, 대기 열 에서 요 소 를 가 져 올 때 대기 열 머리 에서 가 져 옵 니 다.
이것 은 전통 적 인 경계 대기 열 입 니 다. 이 경계 대기 열 에 서 는 생산자 가 만 든 요소 와 소비자 가 얻 은 요 소 를 저장 하 는 고정 크기 의 배열 입 니 다.만 들 면 크기 를 바 꿀 수 없습니다.가득 찬 대기 열 에 요 소 를 추가 하려 고 시도 하면 작업 이 막 힙 니 다.빈 대기 열 에서 요 소 를 가 져 오 면 작업 이 막 힐 수 있 습 니 다.
이 종 류 는 대기 중인 생산 과 소비자 스 레 드 정렬 에 선택 할 수 있 는 공정 한 전략 을 제공 합 니 다.기본적으로 순 서 는 보장 되 지 않 는 다.단, fairness = true 로 만 든 대기 열 은 FIFO 특성 을 보증 할 수 있 습 니 다.공정 성 은 통상 적 으로 물동량 을 줄 이지 만 변성 을 줄 이 고 배 고 픔 을 피 할 수 있다.
/**
* A bounded {@linkplain BlockingQueue blocking queue} backed by an
* array. This queue orders elements FIFO (first-in-first-out). The
* head of the queue is that element that has been on the
* queue the longest time. The tail of the queue is that
* element that has been on the queue the shortest time. New elements
* are inserted at the tail of the queue, and the queue retrieval
* operations obtain elements at the head of the queue.
*
* This is a classic "bounded buffer", in which a
* fixed-sized array holds elements inserted by producers and
* extracted by consumers. Once created, the capacity cannot be
* changed. Attempts to {@code put} an element into a full queue
* will result in the operation blocking; attempts to {@code take} an
* element from an empty queue will similarly block.
*
*
This class supports an optional fairness policy for ordering
* waiting producer and consumer threads. By default, this ordering
* is not guaranteed. However, a queue constructed with fairness set
* to {@code true} grants threads access in FIFO order. Fairness
* generally decreases throughput but reduces variability and avoids
* starvation.
*
*
This class and its iterator implement all of the
* optional methods of the {@link Collection} and {@link
* Iterator} interfaces.
*
*
This class is a member of the
* * Java Collections Framework.
*
* @since 1.5
* @author Doug Lea
* @param the type of elements held in this collection
*/
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.