java 큐 예제

Java의 큐 구현은 범용(java.util.Queue 인터페이스의 구현) 및 동시(java.util.concurrent.BlockingQueue 인터페이스의 구현)로 그룹화되어 있으며, 위의 코드에서 볼 수 있듯이 큐를 생성하기 위해 큐 개체에 LinkedList 인스턴스를 할당해야 합니다. 또한 이전에 설명한 함수를 호출하고 사용하는 방법을 알 수 있습니다. 또한 include() 메서드와 같이 Queue가 컬렉션에서 상속하는 더 많은 메서드를 사용할 수 있다는 점에 유의해야 합니다. FIFO(선착순)가 큐의 요소를 정렬하는 가장 일반적인 방법입니다. 이 예제에서는 큐를 처리하기 위해 작업을 표시합니다. 큐는 일반적으로 FIFO(선입선) 방식으로 요소를 정렬할 수 있지만 반드시 그런 것은 아닙니다. 예외 중에는 제공된 비교기또는 요소의 자연 순서에 따라 요소를 정렬하는 우선 순위 큐와 요소 LIFO(마지막 선착순)를 정렬하는 LIFO 큐(또는 스택)가 있습니다. 순서가 무엇이든 간에 큐의 헤드는 remove() 또는 poll()을 호출하여 제거되는 요소입니다. FIFO 큐에서 모든 새 요소가 큐의 꼬리에 삽입됩니다.

다른 종류의 큐는 다른 배치 규칙을 사용할 수 있습니다. 모든 큐 구현은 순서 지정 속성을 지정해야 합니다. 이것은 자바의 큐에 대한 자습서였습니다. 이 예제의 소스 코드를 다운로드합니다: QueueExample.zip + ArrayBlockingQueue: 배열이 뒷받침하는 차단 큐입니다. 제한된 용량(경계)이 있는 간단한 차단 큐를 사용하려는 경우 ArrayBlockingQueue를 사용하는 것이 좋습니다. AbstractQueue 클래스를 확장 하는 사용자 지정 큐를 만들 때 null 요소의 삽입을 허용 하지 않는 offer 메서드의 구현을 제공 해야 합니다. 다음 예제 프로그램에서는 카운트다운 타이머를 구현하는 데 큐가 사용됩니다. 큐는 명령줄에 지정된 숫자에서 내림차순으로 0으로 모든 정수 값으로 미리 로드됩니다. 그런 다음 값이 큐에서 제거되고 1초 간격으로 인쇄됩니다. 이 프로그램은 큐를 사용하지 않고 동일한 작업을 수행하는 것이 더 자연스러울 수 있지만 후속 처리 전에 요소를 저장하는 큐를 사용하는 것을 보여 준다는 점에서 인위적입니다.

다행히도 Java는 동시 링크드 큐, 배열 차단 큐 및 동시 링크드데크를 제공하며 스레드가 안전하며 다중 스레드 프로그램에 적합합니다. 큐 구현은 일반적으로 null 요소의 삽입을 허용하지 않지만 LinkedList와 같은 일부 구현에서는 null 삽입을 금지하지 않습니다. null은 폴링 메서드에 의해 특수 반환 값으로 사용되어 큐에 요소가 포함되어 있지 않음을 나타내기 때문에 null을 큐에 삽입해서는 안 됩니다. 용량 제한 큐에 선호되는 작업에 따라 특수 값(null 또는 false)을 반환하는 큐 구현이 보유하는 요소의 수를 제한할 수 있습니다. 이러한 큐를 경계라고 합니다. java.util.concurrent의 일부 큐 구현은 경계가 있지만 java.util의 구현은 그렇지 않습니다. 큐는 처리하기 전에 요소를 보유하기 위한 컬렉션입니다. 기본 수집 작업 외에도 큐는 추가 삽입, 제거 및 검사 작업을 제공합니다. 큐 인터페이스는 다음과 같습니다.

Queue 인터페이스는 java.util 패키지에서 사용할 수 있으며 컬렉션 인터페이스를 확장합니다. 큐 컬렉션은 처리될 요소를 보유하는 데 사용되며 삽입, 제거 등과 같은 다양한 작업을 제공합니다. 목록의 끝에 요소를 삽입하고 목록의 시작 부분(즉, FIFO 또는 First-In-First-Out) 원칙을 따르는 요소를 삭제하는 데 제한이 있는 정렬된 개체 목록입니다. 인터페이스이기 때문에 큐는 선언에 대한 구체적인 클래스가 필요하며 가장 일반적인 클래스는 priorityQueue 및 Java.It LinkedList입니다.