java queue 예제

예를 들어 여러 스레드에서 단일 디스크에 쓰기하면 리소스 경합이 발생하며 쓰기 시간이 느려질 수 있습니다. BlockingQueue를 사용하여 단일 기록기 스레드를 만들면 이 문제를 완화하고 쓰기 속도가 크게 향상될 수 있습니다. FIFO(선착순)가 큐의 요소를 정렬하는 가장 일반적인 방법입니다. 이 예제에서는 큐를 처리하기 위해 작업을 표시합니다. + 링크드 리스트: 이 클래스는 목록 및 Deque 인터페이스를 모두 구현하므로 목록 및 큐의 하이브리드 특성과 동작이 있습니다. 양쪽 끝에서 요소를 빠르게 추가하고 빠르게 제거하려는 경우 LinkedList를 사용하는 것이 좋습니다. Java 큐 인터페이스는 FIFO(선차 에서 선차) 방식으로 요소를 정렬합니다. FIFO에서 첫 번째 요소가 먼저 제거되고 마지막 요소가 마지막으로 제거됩니다. 큐 구현은 일반적으로 null 요소의 삽입을 허용하지 않지만 LinkedList와 같은 일부 구현에서는 null 삽입을 금지하지 않습니다. null은 폴링 메서드에 의해 특수 반환 값으로 사용되어 큐에 요소가 포함되어 있지 않음을 나타내기 때문에 null을 큐에 삽입해서는 안 됩니다. 큐는 일반적으로 FIFO(선입선) 방식으로 요소를 정렬할 수 있지만 반드시 그런 것은 아닙니다. 예외 중에는 제공된 비교기또는 요소의 자연 순서에 따라 요소를 정렬하는 우선 순위 큐와 요소 LIFO(마지막 선착순)를 정렬하는 LIFO 큐(또는 스택)가 있습니다.

순서가 무엇이든 간에 큐의 헤드는 remove() 또는 poll()을 호출하여 제거되는 요소입니다. FIFO 큐에서 모든 새 요소가 큐의 꼬리에 삽입됩니다. 다른 종류의 큐는 다른 배치 규칙을 사용할 수 있습니다. 모든 큐 구현은 순서 지정 속성을 지정해야 합니다. 컬렉션 클래스의 하위 형식이므로 크기(), isEmpty(), include() 등 모든 메서드를 상속합니다. 다음은 이러한 메서드를 보여 주는 간단한 Java 프로그램입니다. 이러한 큐를 경계라고 합니다. java.util.concurrent의 일부 큐 구현은 경계가 있지만 java.util의 구현은 그렇지 않습니다. 다행히도 Java는 동시 링크드 큐, 배열 차단 큐 및 동시 링크드데크를 제공하며 스레드가 안전하며 다중 스레드 프로그램에 적합합니다. offer 메서드는 가능하면 요소를 삽입하고 그렇지 않으면 false를 반환합니다. 이는 선택되지 않은 예외를 throw하여 요소를 추가하지 못할 수 있는 Collection.add 메서드와 다릅니다.

오퍼 방법은 고정 용량(또는 « 경계가 지정된 ») 큐와 같이 예외적인 발생이 아닌 정상인 경우 사용하도록 설계되었습니다. PriorityQueue 클래스는 큐를 사용하는 기능을 제공합니다. 그러나 FIFO 방식으로 요소를 주문하지는 않습니다. 추상큐 클래스를 상속합니다. 용량 제한 큐에 선호되는 작업에 따라 특수 값(null 또는 false)을 반환하는 다음 예제에서는 우선 순위 큐가 요소 컬렉션을 정렬하는 데 사용됩니다.

Dark Bugsyjava queue 예제