Skip to content
geeksforgeeks
  • Courses
    • DSA to Development
    • Get IBM Certification
    • Newly Launched!
      • Master Django Framework
      • Become AWS Certified
    • For Working Professionals
      • Interview 101: DSA & System Design
      • Data Science Training Program
      • JAVA Backend Development (Live)
      • DevOps Engineering (LIVE)
      • Data Structures & Algorithms in Python
    • For Students
      • Placement Preparation Course
      • Data Science (Live)
      • Data Structure & Algorithm-Self Paced (C++/JAVA)
      • Master Competitive Programming (Live)
      • Full Stack Development with React & Node JS (Live)
    • Full Stack Development
    • Data Science Program
    • All Courses
  • Tutorials
    • Data Structures & Algorithms
    • ML & Data Science
    • Interview Corner
    • Programming Languages
    • Web Development
    • CS Subjects
    • DevOps And Linux
    • School Learning
  • Practice
    • Build your AI Agent
    • GfG 160
    • Problem of the Day
    • Practice Coding Problems
    • GfG SDE Sheet
  • Contests
    • Accenture Hackathon (Ending Soon!)
    • GfG Weekly [Rated Contest]
    • Job-A-Thon Hiring Challenge
    • All Contests and Events
  • Java Arrays
  • Java Strings
  • Java OOPs
  • Java Collection
  • Java 8 Tutorial
  • Java Multithreading
  • Java Exception Handling
  • Java Programs
  • Java Project
  • Java Collections Interview
  • Java Interview Questions
  • Java MCQs
  • Spring
  • Spring MVC
  • Spring Boot
  • Hibernate
Open In App
Next Article:
ArrayBlockingQueue put() method in Java
Next article icon

ArrayBlockingQueue poll() Method in Java

Last Updated : 04 Apr, 2023
Comments
Improve
Suggest changes
Like Article
Like
Report

ArrayBlockingQueue is bounded, blocking queue that stores the elements internally backed by an array.

  • ArrayBlockingQueue class is a member of the Java Collections Framework.
  • Bounded means it will have a fixed size, you can not store number the elements more than the capacity of the queue.
  • The queue also follows FIFO (first-in-first-out) rule for storing and removing elements from the queue.
  • If you try to put an element into a full queue or to take an element from an empty queue then the queue will block you.

There are two types of poll() method depending upon no of parameter passed.

  1. The poll() method retrieves and removes element from head of this queue.If queue is empty then method will return null.
    Syntax:
    public E poll()

    Return Value: The method returns the element from the head of this queue, or null if this queue is empty.

    Below programs illustrate poll() method of ArrayBlockingQueue.

    Program 1:




    /*
    *Program Demonstrate poll() method of ArrayBlockingQueue.
    */
      
    import java.util.concurrent.ArrayBlockingQueue;
      
    public class GFG {
      
        public static void main(String[] args)
        {
            // define capacity of ArrayBlockingQueue
            int capacity = 5;
      
            // create object of ArrayBlockingQueue
            ArrayBlockingQueue<Integer> queue = new 
                   ArrayBlockingQueue<Integer>(capacity);
      
            // Add elements to ArrayBlockingQueue
            queue.offer(423);
            queue.offer(233);
            queue.offer(356);
      
            // print elements
            System.out.println("Queue Contains" + queue);
      
            // try to poll  elements
            System.out.println("Removing From head: " + 
                                           queue.poll());
            System.out.println("Queue Contains" + queue);
            System.out.println("Removing From head: " + 
                                           queue.poll());
            System.out.println("Queue Contains" + queue);
            System.out.println("Removing From head: " + 
                                           queue.poll());
            System.out.println("Queue Contains" + queue);
            System.out.println("Removing From head: " + 
                                           queue.poll());
            System.out.println("Queue Contains" + queue);
        }
    }
     
     
    Output:
      Queue Contains[423, 233, 356]  Removing From head: 423  Queue Contains[233, 356]  Removing From head: 233  Queue Contains[356]  Removing From head: 356  Queue Contains[]  Removing From head: null  Queue Contains[]  

    Program 2:




    /*
    * Program Demonstrate poll() method of ArrayBlockingQueue.
    */
      
    import java.util.concurrent.ArrayBlockingQueue;
      
    public class GFG {
      
        // Create a User Object with name and age as an attribute
        public class User {
      
            public String name;
            public String age;
            User(String name, String age)
            {
                this.name = name;
                this.age = age;
            }
        }
      
        // Main Method
        public static void main(String[] args)
        {
            GFG gfg = new GFG();
            gfg.pollMethodExample();
        }
      
        // Method to give example of poll function
        public void pollMethodExample()
        {
      
            // Define the capacity of ArrayBlockingQueue
            int capacity = 5;
      
            // Create object of ArrayBlockingQueue
            ArrayBlockingQueue<User> queue = 
                   new ArrayBlockingQueue<User>(capacity);
      
            // Create user objects
            User user1 = new User("Aman", "24");
            User user3 = new User("Sanjeet", "25");
      
            // Add Objects to ArrayBlockingQueue
            queue.offer(user1);
            queue.offer(user3);
      
            // Poll users from queue
            User user = queue.poll();
            System.out.println("removing user having name = "
                                                + user.name);
            user = queue.poll();
            System.out.println("removing user having name = "
                                                + user.name);
      
            // Now queue is empty
            // Try to remove it will return null
            user = queue.poll();
            System.out.println("removing user having name = "
                                                     + user);
        }
    }
     
     
    Output:
      removing user having name = Aman  removing user having name = Sanjeet  removing user having name = null  
  2. The poll(long timeout, TimeUnit unit) method retrieves and removes element from head of this queue. If the queue is empty then it will, wait till a specified time for an element to become available.
    Syntax:
    public E poll(long timeout, TimeUnit unit) throws InterruptedException

    Parameters: The method takes two parameters:

    • timeout (long) – how long to wait before giving up, in units of unit.
    • unit (TimeUnit)- a TimeUnit determining how to interpret the timeout parameter.

    Return Value: The method returns the head of this queue, or null if the specified waiting time elapses before an element is available.
    Exception: The method throws InterruptedException if interrupted while waiting.

    Below program illustrates poll(long timeout, TimeUnit unit)method of ArrayBlockingQueue.




    /*
    * Program Demonstrate offer(E e, long timeout, TimeUnit unit)
    * method of ArrayBlockingQueue.
    */
      
    import java.util.concurrent.ArrayBlockingQueue;
    import java.util.concurrent.TimeUnit;
      
    public class GFG {
      
        public static void main(String[] args) 
                           throws InterruptedException
        {
            // Define capacity of ArrayBlockingQueue
            int capacity = 5;
      
            // Create object of ArrayBlockingQueue
            ArrayBlockingQueue<Integer> queue = 
                new ArrayBlockingQueue<Integer>(capacity);
      
            // Add elements to ArrayBlockingQueue
            queue.offer(423);
            queue.offer(233);
            queue.offer(356);
      
            // Print elements
            System.out.println("Queue Contains" + queue);
      
            // Try to poll  elements
            System.out.println("Removing From head: " 
                      + queue.poll(10, TimeUnit.SECONDS));
            System.out.println("Queue Contains" + queue);
            System.out.println("Removing From head: " 
                      + queue.poll(10, TimeUnit.SECONDS));
            System.out.println("Queue Contains" + queue);
            System.out.println("Removing From head: " + 
                        queue.poll(10, TimeUnit.SECONDS));
            System.out.println("Queue Contains" + queue);
            System.out.println("Removing From head: " + 
                       queue.poll(10, TimeUnit.SECONDS));
        }
    }
     
     
    Output:
      Queue Contains[423, 233, 356]  Removing From head: 423  Queue Contains[233, 356]  Removing From head: 233  Queue Contains[356]  Removing From head: 356  Queue Contains[]  Removing From head: null  

Reference:
https://docs.oracle.com/javase/7/docs/api/java/util/concurrent/ArrayBlockingQueue.html#poll()



Next Article
ArrayBlockingQueue put() method in Java

A

AmanSingh2210
Improve
Article Tags :
  • Java
  • Java - util package
  • Java-ArrayBlockingQueue
  • Java-Collections
  • Java-Functions
Practice Tags :
  • Java
  • Java-Collections

Similar Reads

  • ArrayBlockingQueue Class in Java
    In Java, the ArrayBlockingQueue class is part of the java.util.concurrent package and implements the BlockingQueue interface. It is a thread-safe, bounded queue that helps manage producer-consumer scenarios by blocking threads when the queue is full or empty. The queue has a fixed size, specified du
    8 min read
  • ArrayBlockingQueue add() method in Java
    ArrayBlockingQueue is bounded, blocking queue that stores the elements internally backed by an array. ArrayBlockingQueue class is a member of the Java Collections Framework. Bounded means it will have a fixed size, you can not store number the elements more than the capacity of the queue. The queue
    3 min read
  • ArrayBlockingQueue clear() Method in Java
    ArrayBlockingQueue is bounded, blocking queue that stores the elements internally backed by an array. ArrayBlockingQueue class is a member of the Java Collections Framework.Bounded means it will have a fixed size, you can not store number the elements more than the capacity of the queue.The queue al
    2 min read
  • ArrayBlockingQueue contains() method in Java
    ArrayBlockingQueue is bounded, blocking queue that stores the elements internally backed by an array. ArrayBlockingQueue class is a member of the Java Collections Framework. Bounded means it will have a fixed size, you can not store number the elements more than the capacity of the queue. The queue
    3 min read
  • ArrayBlockingQueue drainTo() Method in Java
    ArrayBlockingQueue is bounded, blocking queue that stores the elements internally backed by an array. ArrayBlockingQueue class is a member of the Java Collections Framework.Bounded means it will have a fixed size, you can not store number the elements more than the capacity of the queue.The queue al
    5 min read
  • ArrayBlockingQueue iterator() Method in Java
    The iterator() method of ArrayBlockingQueue class is used to returns an iterator of the same elements as this queue in a proper sequence. The elements returned from this method contains elements in order from first(head) to last(tail). The returned iterator is weakly consistent. Syntax: public Itera
    2 min read
  • ArrayBlockingQueue offer() Method in Java
    ArrayBlockingQueue is bounded, blocking queue that stores the elements internally backed by an array. ArrayBlockingQueue class is a member of the Java Collections Framework. Bounded means it will have a fixed size, you can not store number the elements more than the capacity of the queue. The queue
    6 min read
  • ArrayBlockingQueue peek() Method in Java
    ArrayBlockingQueue is bounded, blocking queue that stores the elements internally backed by an array. ArrayBlockingQueue class is a member of the Java Collections Framework.Bounded means it will have a fixed size, you can not store number the elements more than the capacity of the queue.The queue al
    3 min read
  • ArrayBlockingQueue poll() Method in Java
    ArrayBlockingQueue is bounded, blocking queue that stores the elements internally backed by an array. ArrayBlockingQueue class is a member of the Java Collections Framework. Bounded means it will have a fixed size, you can not store number the elements more than the capacity of the queue. The queue
    4 min read
  • ArrayBlockingQueue put() method in Java
    ArrayBlockingQueue is bounded, blocking queue that stores the elements internally backed by an array. ArrayBlockingQueue class is a member of the Java Collections Framework. Bounded means it will have a fixed size, you can not store number the elements more than the capacity of the queue. The queue
    2 min read
geeksforgeeks-footer-logo
Corporate & Communications Address:
A-143, 7th Floor, Sovereign Corporate Tower, Sector- 136, Noida, Uttar Pradesh (201305)
Registered Address:
K 061, Tower K, Gulshan Vivante Apartment, Sector 137, Noida, Gautam Buddh Nagar, Uttar Pradesh, 201305
GFG App on Play Store GFG App on App Store
Advertise with us
  • Company
  • About Us
  • Legal
  • Privacy Policy
  • In Media
  • Contact Us
  • Advertise with us
  • GFG Corporate Solution
  • Placement Training Program
  • Languages
  • Python
  • Java
  • C++
  • PHP
  • GoLang
  • SQL
  • R Language
  • Android Tutorial
  • Tutorials Archive
  • DSA
  • Data Structures
  • Algorithms
  • DSA for Beginners
  • Basic DSA Problems
  • DSA Roadmap
  • Top 100 DSA Interview Problems
  • DSA Roadmap by Sandeep Jain
  • All Cheat Sheets
  • Data Science & ML
  • Data Science With Python
  • Data Science For Beginner
  • Machine Learning
  • ML Maths
  • Data Visualisation
  • Pandas
  • NumPy
  • NLP
  • Deep Learning
  • Web Technologies
  • HTML
  • CSS
  • JavaScript
  • TypeScript
  • ReactJS
  • NextJS
  • Bootstrap
  • Web Design
  • Python Tutorial
  • Python Programming Examples
  • Python Projects
  • Python Tkinter
  • Python Web Scraping
  • OpenCV Tutorial
  • Python Interview Question
  • Django
  • Computer Science
  • Operating Systems
  • Computer Network
  • Database Management System
  • Software Engineering
  • Digital Logic Design
  • Engineering Maths
  • Software Development
  • Software Testing
  • DevOps
  • Git
  • Linux
  • AWS
  • Docker
  • Kubernetes
  • Azure
  • GCP
  • DevOps Roadmap
  • System Design
  • High Level Design
  • Low Level Design
  • UML Diagrams
  • Interview Guide
  • Design Patterns
  • OOAD
  • System Design Bootcamp
  • Interview Questions
  • Inteview Preparation
  • Competitive Programming
  • Top DS or Algo for CP
  • Company-Wise Recruitment Process
  • Company-Wise Preparation
  • Aptitude Preparation
  • Puzzles
  • School Subjects
  • Mathematics
  • Physics
  • Chemistry
  • Biology
  • Social Science
  • English Grammar
  • Commerce
  • World GK
  • GeeksforGeeks Videos
  • DSA
  • Python
  • Java
  • C++
  • Web Development
  • Data Science
  • CS Subjects
@GeeksforGeeks, Sanchhaya Education Private Limited, All rights reserved
We use cookies to ensure you have the best browsing experience on our website. By using our site, you acknowledge that you have read and understood our Cookie Policy & Privacy Policy
Lightbox
Improvement
Suggest Changes
Help us improve. Share your suggestions to enhance the article. Contribute your expertise and make a difference in the GeeksforGeeks portal.
geeksforgeeks-suggest-icon
Create Improvement
Enhance the article with your expertise. Contribute to the GeeksforGeeks community and help create better learning resources for all.
geeksforgeeks-improvement-icon
Suggest Changes
min 4 words, max Words Limit:1000

Thank You!

Your suggestions are valuable to us.

What kind of Experience do you want to share?

Interview Experiences
Admission Experiences
Career Journeys
Work Experiences
Campus Experiences
Competitive Exam Experiences