대기열 제안 대 Java에서 추가

Rashmi Patidar 2023년10월12일
대기열 제안 대 Java에서 추가

대기열은 사용자가 선입선출 방식으로 요소를 추가할 수 있는 데이터 구조입니다. Java에서 queuejava.util 패키지에 있는 인터페이스입니다. 데이터 구조에서 정렬된 요소를 허용하는 선형 구조입니다.

컬렉션은 양쪽 끝 또는 뒤쪽과 앞쪽 끝에서 열립니다. 이 속성을 사용하면 개체를 앞쪽에서 추가하고 뒤쪽에서 제거할 수 있습니다.

구조는 다양한 메소드를 제공하며, 이에 대한 설명은 아래 코드에 있습니다.

import java.util.Queue;
import java.util.concurrent.ArrayBlockingQueue;

public class Main {
  public static void main(String[] args) {
    Queue queue = new ArrayBlockingQueue(2);
    boolean value = false;
    value = queue.offer(1);
    System.out.println("Offer Returned Value: " + value);
    value = queue.offer(2);
    System.out.println("Offer Returned Value: " + value);
    value = queue.offer(3);
    System.out.println("Offer Returned Value: " + value);

    Queue blockingQueue = new ArrayBlockingQueue(2);
    blockingQueue.add(5);
    blockingQueue.add(10);
    blockingQueue.add(15);
  }
}

위의 코드 블록은 addoffer 메소드의 구현을 모두 포함하며 둘 사이의 차이점을 제공합니다. 위의 코드 블록은 new 키워드를 사용하여 queue 인스턴스를 인스턴스화합니다.

첫 번째 명령문은 크기 2의 고정 용량과 기본 액세스 정책을 사용하여 ArrayBlockingQueue의 개체를 생성합니다. 크기 값을 매개변수로 사용합니다. 용량이 1보다 작으면 IllegalArgumentException이 발생합니다.

offer 메소드는 용량 제한을 확인한 후 지정된 요소를 이 대기열에 삽입합니다. 이 함수는 매개변수를 추가할 요소로 사용합니다. 이 함수는 값이 대기열 끝에 추가되면 true를 반환합니다. 그렇지 않으면 거짓.

지정된 요소의 클래스가 요소에 추가되는 것을 방지하면 ClassCastException이 발생합니다. 지정된 값이 null이면 NullPointerException이 호출됩니다. 일부 요소 속성으로 인해 대기열에 추가되지 않는 경우 IllegalArgumentException이 발생합니다.

offer 함수 옆의 print 문은 true 또는 false 부울 값을 인쇄합니다. 다시, 새로운 ArrayBlockingQueue2 크기의 용량으로 인스턴스화됩니다. 두 번 성공적으로 삽입될 때까지 추가한 다음 Exception 추적을 throw합니다.

이 메서드는 매개변수를 큐에 추가할 요소로 사용합니다. 성공적으로 추가될 때마다 true를 반환합니다. 그렇지 않으면 값을 추가할 수 없는 경우 IllegalStateException이 발생합니다.

지정된 요소의 클래스가 추가를 방지하는 경우 ClassCastException이 발생합니다. 지정된 값이 null인 경우 NullPointerException이고, 이 요소의 속성이 큐에 추가되는 것을 방지하는 경우 IllegalArgumentException입니다.

메소드 간의 유일한 차이점은 offer 메소드는 추가가 이루어진 경우 true 또는 false를 발생시킨다는 것입니다. 이와 대조적으로 add 메소드는 대기열에 더 이상 추가할 수 없을 때 예외를 던집니다.

아래는 위 코드 블록의 결과 출력입니다.

Offer Returned Value: true
Offer Returned Value: true
Offer Returned Value: false
Exception in thread "main" java.lang.IllegalStateException: Queue full
    at java.util.AbstractQueue.add(AbstractQueue.java:98)
    at java.util.concurrent.ArrayBlockingQueue.add(ArrayBlockingQueue.java:312)
    at F11.QueueAddVsOffer.main(QueueAddVsOffer.java:25)
Rashmi Patidar avatar Rashmi Patidar avatar

Rashmi is a professional Software Developer with hands on over varied tech stack. She has been working on Java, Springboot, Microservices, Typescript, MySQL, Graphql and more. She loves to spread knowledge via her writings. She is keen taking up new things and adopt in her career.

LinkedIn

관련 문장 - Java Queue