实现并发链接队列应用编程接口的 Java 程序
原文:https://www . geesforgeks . org/Java-程序到实现-concurrentlinkedqueue-api/
Java 中的ConcurrentLinkedQueue类是 Java 集合框架的一部分。属于Java . util . concurrent包。它是在 JDK 1.5 中引入的。用于同时借助 链表实现队列。这是队列的一种无边界线程安全实现,它以先进先出的方式在队列尾部插入元素。当多个线程共享一个无界队列时,可以使用它。
为了实现并发链接队列应用编程接口,我们首先创建一个类“并发链接队列实现”,并在这个类中创建队列的所有方法。
并发链接队列应用编程接口的实现:
Java 语言(一种计算机语言,尤用于创建网站)
// Java program to demonstrate the
// implementation of ConcurrentLinkedQueue API
import java.util.Collection;
import java.util.Iterator;
import java.util.concurrent.ConcurrentLinkedQueue;
class ConcurrentLinkedQueueImplmentation<E> {
private ConcurrentLinkedQueue<E> concurrentLinkedQueue;
// Constructor creates a new empty ConcurrentLinkedQueue
public ConcurrentLinkedQueueImplmentation()
{
// New empty concurrentLinkedQueue
concurrentLinkedQueue = new ConcurrentLinkedQueue<>();
}
// Constructor creates a new ConcurrentLinkedQueue of
// type E
public ConcurrentLinkedQueueImplmentation(Collection<? extends E> c)
{
// New empty concurrentLinkedQueue
concurrentLinkedQueue = new ConcurrentLinkedQueue<>(c);
}
// Add specified element to the tail of the queue
public boolean add(E e)
{
// Add element
return concurrentLinkedQueue.add(e);
}
// Returns true if the queue contains the specified
// element
public boolean contains(Object o)
{
return concurrentLinkedQueue.contains(o);
}
// Returns an iterator over the elements of the queue
public Iterator<E> iterator()
{
return concurrentLinkedQueue.iterator();
}
// Add the specified element at the tail of the queue
public boolean offer(E e)
{
return concurrentLinkedQueue.offer(e);
}
// Returns the peek of the queue or returns null if this
// queue is empty.
public E peek() { return concurrentLinkedQueue.peek(); }
// Retrieves and removes the head of this queue, or
// returns null if this queue is empty
public E poll() { return concurrentLinkedQueue.poll(); }
// Removes a single instance of the specified element
// from this queue, if it is present.
public boolean remove(Object o)
{
return concurrentLinkedQueue.remove(o);
}
// Returns the size of the queue
public int size()
{
return concurrentLinkedQueue.size();
}
// Returns an array containing all of the elements in
// this queue
public Object[] toArray()
{
return concurrentLinkedQueue.toArray();
}
// Returns an array containing all of the elements in
// this queue, in proper sequence; the return type of
// the array is that of the specified
// array.
public <T> T[] toArray(T[] a)
{
return concurrentLinkedQueue.toArray(a);
}
}
public class GFG {
public static void main(String[] arg)
{
// New ConcurrentLinkedQueue
ConcurrentLinkedQueueImplmentation<Integer>
concurrentLinkedQueue
= new ConcurrentLinkedQueueImplmentation<
Integer>();
// Adding elements to the ConcurrentLinkedQueue
concurrentLinkedQueue.add(10);
concurrentLinkedQueue.add(20);
concurrentLinkedQueue.add(30);
concurrentLinkedQueue.add(40);
concurrentLinkedQueue.add(50);
System.out.println(
"The elements of the ConcurrentLinkedQueue is:");
// Iterator to iterate over ConcurrentLinkedQueue
Iterator<Integer> it
= concurrentLinkedQueue.iterator();
// Iterate over ConcurrentLinkedQueue
while (it.hasNext())
{
System.out.print(it.next() + " ");
}
System.out.println();
// Print the size of the queue
System.out.println("Size of the concurrentLinkedQueue is: "
+ concurrentLinkedQueue.size());
System.out.println();
// Print Peek element of the queue
System.out.println("The peek element of the concurrentLinkedQueue is: "
+ concurrentLinkedQueue.peek());
System.out.println();
// Print the polled element of the queue
System.out.println("The polled element of the concurrentLinkedQueue is: "
+ concurrentLinkedQueue.poll());
System.out.println();
// Remove specified element to the queue, returns
// true if removed successfully or returns null if
// element not present in the queue
System.out.println("Remove 30: "
+ concurrentLinkedQueue.remove(30));
System.out.println();
// Check whether the spaecified element is present
// or not in the queue
System.out.println("The concurrentLinkedQueue contains 40:"
+ concurrentLinkedQueue.contains(40));
System.out.println();
// Print the size of the queue
System.out.println("Size of the concurrentLinkedQueue is: "
+ concurrentLinkedQueue.size());
}
}
Output
The elements of the ConcurrentLinkedQueue is:
10 20 30 40 50
Size of the concurrentLinkedQueue is: 5
The peek element of the concurrentLinkedQueue is: 10
The polled element of the concurrentLinkedQueue is: 10
Remove 30: true
The concurrentLinkedQueue contains 40:true
Size of the concurrentLinkedQueue is: 3
版权属于:月萌API www.moonapi.com,转载请注明出处