java
이 자습서에서는 예제를 통해 ArrayBlockingQueue 클래스와 해당 메서드에 대해 알아봅니다.
ArrayBlockingQueue
Java Collections 프레임워크의 클래스는 배열을 사용하여 차단 대기열 구현을 제공합니다.
Java BlockingQueue 인터페이스를 구현합니다.
<시간>
배열 차단 대기열을 생성하려면 java.util.concurrent.ArrayBlockingQueue
를 가져와야 합니다. 패키지.
패키지를 가져온 후 Java에서 배열 차단 대기열을 만드는 방법은 다음과 같습니다.
ArrayBlockingQueue<Type> animal = new ArrayBlockingQueue<>(int capacity);
여기,
예를 들어,
// Creating String type ArrayBlockingQueue with size 5
ArrayBlockingQueue<String> animals = new ArrayBlockingQueue<>(5);
// Creating Integer type ArrayBlockingQueue with size 5
ArrayBlockingQueue<Integer> age = new ArrayBlockingQueue<>(5);
참고: 배열의 크기를 제공하는 것은 필수입니다.
<시간>
ArrayBlockingQueue
클래스는 BlockingQueue
의 모든 메서드 구현을 제공합니다. 인터페이스.
이러한 메서드는 배열 차단 대기열에서 요소를 삽입, 액세스 및 삭제하는 데 사용됩니다.
또한 두 가지 방법 put()
에 대해 배웁니다. 및 take()
배열 블로킹 큐에서 블로킹 작업을 지원합니다.
이 두 가지 방법은 배열 차단 대기열을 다른 일반적인 대기열과 구별합니다.
<시간>add()
- 배열 블로킹 큐에 지정된 요소를 삽입합니다. 대기열이 가득 차면 예외가 발생합니다.offer()
- 배열 블로킹 큐에 지정된 요소를 삽입합니다. false
을 반환합니다. 대기열이 가득 찬 경우.예를 들어,
import java.util.concurrent.ArrayBlockingQueue;
class Main {
public static void main(String[] args) {
ArrayBlockingQueue<String> animals = new ArrayBlockingQueue<>(5);
// Using add()
animals.add("Dog");
animals.add("Cat");
// Using offer()
animals.offer("Horse");
System.out.println("ArrayBlockingQueue: " + animals);
}
}
출력
ArrayBlockingQueue: [Dog, Cat, Horse]<시간>
peek()
- 배열 블로킹 큐의 앞쪽에서 요소를 반환합니다. null
를 반환합니다. 대기열이 비어 있는 경우.iterator()
- 배열 블로킹 큐의 요소에 순차적으로 액세스하기 위해 반복자 개체를 반환합니다. 큐가 비어 있으면 예외가 발생합니다. java.util.Iterator
을 가져와야 합니다. 패키지를 사용하세요.예를 들어,
import java.util.concurrent.ArrayBlockingQueue;
import java.util.Iterator;
class Main {
public static void main(String[] args) {
ArrayBlockingQueue<String> animals = new ArrayBlockingQueue<>(5);
// Add elements
animals.add("Dog");
animals.add("Cat");
animals.add("Horse");
System.out.println("ArrayBlockingQueue: " + animals);
// Using peek()
String element = animals.peek();
System.out.println("Accessed Element: " + element);
// Using iterator()
Iterator<String> iterate = animals.iterator();
System.out.print("ArrayBlockingQueue Elements: ");
while(iterate.hasNext()) {
System.out.print(iterate.next());
System.out.print(", ");
}
}
}
출력
ArrayBlockingQueue: [Dog, Cat, Horse] Accessed Element: Dog ArrayBlockingQueue Elements: Dog, Cat, Horse,<시간>
remove()
- 배열 블로킹 큐에서 지정된 요소를 반환하고 제거합니다. 대기열이 비어 있으면 예외가 발생합니다.poll()
- 배열 블로킹 큐에서 지정된 요소를 반환하고 제거합니다. null
을 반환합니다. 대기열이 비어 있는 경우.clear()
- 배열 차단 대기열에서 모든 요소를 제거합니다.예를 들어,
import java.util.concurrent.ArrayBlockingQueue;
class Main {
public static void main(String[] args) {
ArrayBlockingQueue<String> animals = new ArrayBlockingQueue<>(5);
animals.add("Dog");
animals.add("Cat");
animals.add("Horse");
System.out.println("ArrayBlockingQueue: " + animals);
// Using remove()
String element1 = animals.remove();
System.out.println("Removed Element:");
System.out.println("Using remove(): " + element1);
// Using poll()
String element2 = animals.poll();
System.out.println("Using poll(): " + element2);
// Using clear()
animals.clear();
System.out.println("Updated ArrayBlockingQueue: " + animals);
}
}
출력
ArrayBlockingQueue: [Dog, Cat, Horse] Removed Elements: Using remove(): Dog Using poll(): Cat Updated ArrayBlockingQueue: []<시간>
멀티스레딩 프로세스에서 put()
을 사용할 수 있습니다. 및 take()
한 스레드의 작업을 차단하여 다른 스레드와 동기화합니다. 이 메서드는 성공적으로 실행될 때까지 대기합니다.
배열 차단 대기열의 끝에 요소를 추가하려면 put()
을 사용할 수 있습니다. 방법.
배열 블로킹 큐가 가득 차면 배열 블로킹 큐에 요소를 추가할 공간이 생길 때까지 기다립니다.
예를 들어,
import java.util.concurrent.ArrayBlockingQueue;
class Main {
public static void main(String[] args) {
ArrayBlockingQueue<String> animals = new ArrayBlockingQueue<>(5);
try {
// Add elements to animals
animals.put("Dog");
animals.put("Cat");
System.out.println("ArrayBlockingQueue: " + animals);
}
catch(Exception e) {
System.out.println(e);
}
}
}
출력
ArrayBlockingQueue: [Dog, Cat]
여기에서 put()
메소드에서 InterruptedException
이 발생할 수 있습니다. 기다리는 동안 중단된 경우. 따라서 try..catch 안에 넣어야 합니다. 차단합니다.
배열 차단 대기열의 앞쪽에서 요소를 반환하고 제거하려면 take()
을 사용할 수 있습니다. 방법.
배열 블로킹 큐가 비어 있으면 배열 블로킹 큐에 삭제할 요소가 있을 때까지 기다립니다.
예를 들어,
import java.util.concurrent.ArrayBlockingQueue;
class Main {
public static void main(String[] args) {
ArrayBlockingQueue<String> animals = new ArrayBlockingQueue<>(5);
try {
//Add elements to animals
animals.put("Dog");
animals.put("Cat");
System.out.println("ArrayBlockingQueue: " + animals);
// Remove an element
String element = animals.take();
System.out.println("Removed Element: " + element);
}
catch(Exception e) {
System.out.println(e);
}
}
}
출력
ArrayBlockingQueue: [Dog, Cat] Removed Element: Dog
여기에서 take()
메소드는 InterrupedException
를 발생시킵니다. 기다리는 동안 중단된 경우. 따라서 try...catch
안에 넣어야 합니다. 차단합니다.
메소드 | 설명 |
---|---|
contains(element) | 지정된 요소에 대한 배열 차단 대기열을 검색합니다.true 를 반환합니다. , 그렇지 않으면 false 을 반환합니다. . |
size() | 배열 차단 큐의 길이를 반환합니다. |
toArray() | 배열 차단 큐를 배열로 변환하고 반환합니다. |
toString() | 배열 차단 큐를 문자열로 변환 |
ArrayBlockingQueue
어레이를 내부 저장소로 사용합니다.
스레드 안전으로 간주됩니다. 수집. 따라서 일반적으로 멀티 스레딩 응용 프로그램에서 사용됩니다.
한 스레드가 큐에 요소를 삽입하고 다른 스레드가 큐에서 요소를 제거한다고 가정합니다.
이제 첫 번째 스레드가 두 번째 스레드보다 느린 경우 배열 블로킹 큐는 첫 번째 스레드가 작업을 완료할 때까지 두 번째 스레드가 기다리게 할 수 있습니다.
java
자바 차단 대기열 이 자습서에서는 Java BlockingQueue 인터페이스와 해당 메서드에 대해 알아봅니다. BlockingQueue 자바 Collections의 인터페이스 프레임워크는 Queue을 확장합니다. 상호 작용. 모든 작업이 성공적으로 수행될 수 있을 때까지 대기할 수 있습니다. 예를 들어, 빈 대기열에서 요소를 삭제하려는 경우 차단 대기열을 사용하면 대기열에 삭제할 일부 요소가 포함될 때까지 삭제 작업이 대기할 수 있습니다. BlockingQueue를 구현하는 클래스 BlockingQueue 이후 인터페이스
자바 LinkedBlockingQueue 이 자습서에서는 예제를 통해 LinkedBLockingQueue 클래스와 해당 메서드에 대해 알아봅니다. LinkedBlockingQueue Java Collections 클래스 프레임워크는 연결 목록을 사용하여 차단 대기열 구현을 제공합니다. Java BlockingQueue 인터페이스를 구현합니다. LinkedBlockingQueue 생성 연결된 차단 대기열을 생성하려면 java.util.concurrent.LinkedBlockingQueue를 가져와야 합니다. 패키지. J