대기열 제안 대 Java에서 추가
대기열
은 사용자가 선입선출
방식으로 요소를 추가할 수 있는 데이터 구조입니다. Java에서 queue
는 java.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);
}
}
위의 코드 블록은 add
및 offer
메소드의 구현을 모두 포함하며 둘 사이의 차이점을 제공합니다. 위의 코드 블록은 new
키워드를 사용하여 queue
인스턴스를 인스턴스화합니다.
첫 번째 명령문은 크기 2의 고정 용량과 기본 액세스 정책을 사용하여 ArrayBlockingQueue
의 개체를 생성합니다. 크기 값을 매개변수로 사용합니다. 용량이 1보다 작으면 IllegalArgumentException
이 발생합니다.
offer
메소드는 용량 제한을 확인한 후 지정된 요소를 이 대기열에 삽입합니다. 이 함수는 매개변수를 추가할 요소로 사용합니다. 이 함수는 값이 대기열 끝에 추가되면 true
를 반환합니다. 그렇지 않으면 거짓
.
지정된 요소의 클래스가 요소에 추가되는 것을 방지하면 ClassCastException
이 발생합니다. 지정된 값이 null이면 NullPointerException
이 호출됩니다. 일부 요소 속성으로 인해 대기열에 추가되지 않는 경우 IllegalArgumentException
이 발생합니다.
offer
함수 옆의 print
문은 true
또는 false
부울 값을 인쇄합니다. 다시, 새로운 ArrayBlockingQueue
는 2
크기의 용량으로 인스턴스화됩니다. 두 번 성공적으로 삽입될 때까지 추가한 다음 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 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