The Java.util.concurrent.LinkedTransferQueue.hasWaitingConsumer() method always returns true if there is at least one consumer in the queue waiting to receive an element via BlockingQueue.take() or timed poll. The returned value represents a momentary state of affairs.
Syntax
public boolean hasWaitingConsumer()
Parameters: It does not take in any parameter.
Return Value: This method returns a boolean value which is true if at least one consumer is present in the queue.
Below are a few examples to illustrate the LinkedTransferQueue.hasWaitingConsumer() method:
Example 1:
// Java code to demonstrate // hasWaitingConsumer() method import java.util.concurrent.LinkedTransferQueue; class GFG { public static void main(String args[]) { LinkedTransferQueue<String> LTQ = new LinkedTransferQueue<String>(); LTQ.add( "Geeks" ); LTQ.add( "For" ); LTQ.add( "Geeks" ); LTQ.add( "GeeksForGeeks" ); System.out.println(LTQ.hasWaitingConsumer()); } } |
false
Example 2:
// Java code to demonstrate // hasWaitingConsumer() method import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.LinkedTransferQueue; public class GFG { LinkedTransferQueue<Integer> LTQ = new LinkedTransferQueue<>(); class LTQProducer implements Runnable { @Override public void run() { for ( int i = 0 ; i < 3 ; i++) { try { System.out.println( "Producer is" + " waiting to transfer" ); LTQ.transfer(i); System.out.println( "Producer transferred" + " element: " + i); System.out.println( "Is there any consumer" + " still waiting to" + " receive an element" + " after transfer -> " + LTQ.hasWaitingConsumer()); } catch (InterruptedException e) { e.printStackTrace(); } } } } class LTQConsumer implements Runnable { int id; LTQConsumer( int id) { this .id = id; } @Override public void run() { try { System.out.println( "Consumer " + id + " is waiting to " + "take an element." ); System.out.println( "Is there any consumer" + " still waiting to" + " receive an element" + " after transfer -> " + LTQ.hasWaitingConsumer()); Integer s = LTQ.take(); System.out.println( "Consumer " + id + " received Element: " + s); } catch (InterruptedException e) { System.out.println(e); } } } // Driver code public static void main(String[] args) throws InterruptedException { GFG ob = new GFG(); ExecutorService exService = Executors.newFixedThreadPool( 3 ); LTQProducer p = ob. new LTQProducer(); LTQConsumer c1 = ob. new LTQConsumer( 0 ); LTQConsumer c2 = ob. new LTQConsumer( 1 ); exService.execute(p); exService.execute(c1); exService.execute(c2); exService.shutdown(); } } |
Producer is waiting to transfer
Consumer 0 is waiting to take an element.
Is there any consumer waiting to take an element -> false
Consumer 1 is waiting to take an element.
Is there any consumer waiting to take an element -> false
Consumer 0 received Element: 0
Producer transferred element: 0
Is there any consumer still waiting to receive an element after transfer -> true
Producer is waiting to transfer
Producer transferred element: 1
Consumer 1 received Element: 1
Is there any consumer still waiting to receive an element after transfer -> false
Producer is waiting to transfer
Attention reader! Don’t stop learning now. Get hold of all the important Java Foundation and Collections concepts with the Fundamentals of Java and Java Collections Course at a student-friendly price and become industry ready.