ArrayBlockingQueue 대 Google Guava 비차단 EvictingQueue 예

게시 됨: 2020-12-29
ArrayBlockingQueue 대 Google Guava 비차단 EvictingQueue 예

동시성 유틸리티는 Java에서 매우 놀랍습니다.

java.util.concurrent 패키지에는 다양한 방법으로 사용할 수 있는 많은 유틸리티가 포함되어 있습니다.

이 튜토리얼에서는 java.util.concurrent의 차이점을 살펴보겠습니다. ArrayBlockingQueue 및 com.google.common.collect. EvictingQueue .

EvictingQueue란 무엇입니까?

EvictingQueueGoogle's Guava library 일부입니다. 이것은 full queue 에 요소를 추가하려고 할 때 대기열의 head 에서 요소를 자동으로 removes 하는 non-blocking , bounded (고정 크기) 대기열입니다.

eclipse-java 프로젝트에 Google의 Guava 라이브러리를 추가하는 방법은 무엇입니까?

maven 프로젝트를 사용하는 경우 pom.xml 파일에 아래 maven 종속성을 추가할 수 있습니다. non-maven 프로젝트의 경우 – 여기에서 다운로드하고 프로젝트의 클래스 경로에 라이브러리를 포함해야 합니다.

ArrayBlockingQueue란 무엇입니까?

배열에 내부적으로 요소를 저장하는 blocking 되고 bounded (고정 크기) 대기열입니다. 요소를 unlimited 으로 저장할 CAN'T . 이 대기열은 FIFO (선입선출) 요소를 주문합니다.

Read more : 싱글톤 큐 예

예제를 시작하겠습니다.

  1. 크기가 10인 ArrayBlockingQueue 생성
  2. 크기가 10인 EvictingQueue 생성
  3. 대기열에 15개 요소 추가 시도
  4. EvictingQueue의 경우 – 오류가 발생하지 않습니다.
  5. ArrayBlockingQueue의 경우 - Queue Full 오류가 발생합니다.

CrunchifyArrayBlockingQueueVsEvictingQueue.java 클래스 생성

이 Java 프로그램을 Eclipse 콘솔 또는 IntelliJ IDEA에서 애플리케이션으로 실행하기만 하면 다음과 같은 결과가 표시됩니다.

콘솔 결과:

위의 프로그램을 실행하는 데 문제가 있으면 알려주십시오.