當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Java LinkedBlockingQueue poll()用法及代碼示例


LinkedBlockingQueue中有兩種poll()方法。

poll()

LinkedBlockingQueue的poll()方法通過從隊列中刪除該元素來返回LinkedBlockingQueue的頭部。可以說此方法從此LinkedBlockingQueue的頭部檢索並刪除了元素。如果隊列為空,則輪詢方法返回null。

用法:


public E poll()

返回值:此方法從此LinkedBlockingQueue的頭部檢索並刪除元素。如果隊列為空,則返回null。

以下示例程序旨在說明LinkedBlockingQueue類的poll()方法:

示例1:使用poll()方法從LinkedBlockingQueue中刪除元素,其中LinkedBlockingQueue包含名稱列表。

// Java Program Demonstrate poll() 
// method of LinkedBlockingQueue 
  
import java.util.concurrent.LinkedBlockingQueue; 
public class GFG { 
  
    public static void main(String[] args) 
    { 
        // define capacity of LinkedBlockingQueue 
        int capacityOfQueue = 4; 
  
        // create object of LinkedBlockingQueue 
        LinkedBlockingQueue<String> linkedQueue 
            = new LinkedBlockingQueue<String>(capacityOfQueue); 
  
        // Add element to LinkedBlockingQueue 
        linkedQueue.add("Ravi"); 
        linkedQueue.add("Suraj"); 
        linkedQueue.add("Harsh"); 
        linkedQueue.add("Sayan"); 
  
        // print elements of queue 
        System.out.println("Items in Queue are " + linkedQueue); 
  
        // we want to remove two elements from queue from head 
        // Applying poll() method on queue to remove element 
        String removedItem1 = linkedQueue.poll(); 
  
        // print removedItem and queue 
        System.out.println("Removed Item is " + removedItem1); 
  
        // print elements of queue after removing first item 
        System.out.println("Remaining Items in Queue are "
                           + linkedQueue); 
  
        // Applying poll() method on queue to remove another element 
        String removedItem2 = linkedQueue.poll(); 
  
        // print removedItem and queue 
        System.out.println("Removed Item is " + removedItem2); 
  
        // print elements of queue after removing first item 
        System.out.println("Remaining Items in Queue are " + linkedQueue); 
    } 
}
輸出:
Items in Queue are [Ravi, Suraj, Harsh, Sayan]

Removed Item is Ravi
Remaining Items in Queue are [Suraj, Harsh, Sayan]

Removed Item is Suraj
Remaining Items in Queue are [Harsh, Sayan]

示例2:從包含雇員列表的LinkedBlockingQueue中刪除元素,如果隊列為空,則打印null。

// Java Program Demonstrate poll() 
// method of LinkedBlockingQueue 
  
import java.util.concurrent.LinkedBlockingQueue; 
public class GFG { 
  
    public void pollingMethod() 
    { 
        // define capacity of LinkedBlockingQueue 
        int capacityOfQueue = 5; 
  
        // create object of LinkedBlockingQueue 
        LinkedBlockingQueue<Employee> linkedQueue 
            = new LinkedBlockingQueue<Employee>(capacityOfQueue); 
  
        // Add element to LinkedBlockingQueue 
        Employee emp1 = new Employee("Ravi", "Tester", "39000"); 
        Employee emp2 = new Employee("Sanjeet", "Manager", "98000"); 
  
        // Add Employee Objects to linkedQueue 
        linkedQueue.add(emp1); 
        linkedQueue.add(emp2); 
  
        // remove elements from the queue 
        // and follow this process again and again 
        // until the queue becomes empty 
        while (linkedQueue.size() != 0) { 
  
            // Remove Employee item from LinkedBlockingQueue 
            Employee removedEmp = linkedQueue.poll(); 
  
            // print removedItem 
            System.out.println("Removed Item is :"); 
            System.out.println("Employee Name - " + removedEmp.name); 
            System.out.println("Employee Position - " + removedEmp.position); 
            System.out.println("Employee Salary - " + removedEmp.salary); 
  
            // find size  of linkedQueue 
            int size = linkedQueue.size(); 
  
            // print remaining capacity value 
            System.out.println("\nSize of list :" + size + "\n"); 
        } 
  
        // Now size of Queue is Zero 
        // Now try to Poll more items 
        // Remove Employee item from LinkedBlockingQueue 
        Employee removedEmp = linkedQueue.poll(); 
  
        // print removedItem 
        // size is zero so removedItem is null 
        System.out.println("Removed Item is : " + removedEmp); 
    } 
  
    // create an Employee Object with name, 
    // position and salary as an attribute 
    public class Employee { 
  
        public String name; 
        public String position; 
        public String salary; 
        Employee(String name, String position, String salary) 
        { 
            this.name = name; 
            this.position = position; 
            this.salary = salary; 
        } 
  
        @Override
        public String toString() 
        { 
            return "Employee [name=" + name + ", position="
                + position + ", salary=" + salary + "]"; 
        } 
    } 
  
    // Main Method 
    public static void main(String[] args) 
    { 
        GFG gfg = new GFG(); 
        gfg.pollingMethod(); 
    } 
}
輸出:
Removed Item is :
Employee Name - Ravi
Employee Position - Tester
Employee Salary - 39000

Size of list :1

Removed Item is :
Employee Name - Sanjeet
Employee Position - Manager
Employee Salary - 98000

Size of list :0

Removed Item is : null

poll(long timeout, TimeUnit unit)

LinkedBlockingQueue的poll(long timeout,TimeUnit unit)方法通過從隊列中刪除該元素來返回LinkedBlockingQueue的頭部。可以說此方法從此LinkedBlockingQueue的頭部檢索並刪除了元素。如果隊列為空,則poll()方法將等待直到指定時間元素可用。

用法:

public E poll(long timeout, TimeUnit unit) throws 

參數:此方法采用兩個強製性參數:

  • timeout–等待的時間,以單位為單位。
  • unit–超時參數的TimeUnit。

返回值:此方法從此LinkedBlockingQueue的頭部檢索並刪除元素,如果在元素可用之前經過了指定的等待時間,則為null。


異常如果在等待元素可用時方法被中斷,則此方法將引發InterruptedException。

以下示例程序旨在說明LinkedBlockingQueue類的poll(長時間超時,TimeUnit單位)方法:

示例1:使用poll()方法從LinkedBlockingQueue中刪除元素,其中LinkedBlockingQueue包含名稱列表。

// Java program to demonstrate 
// poll(long timeout, TimeUnit unit) 
// method of LinkedBlockingQueue 
  
import java.util.concurrent.LinkedBlockingQueue; 
import java.util.concurrent.TimeUnit; 
  
public class GFG { 
  
    public static void main(String[] args) 
        throws InterruptedException 
    { 
        // define capacity of LinkedBlockingQueue 
        int capacityOfQueue = 4; 
  
        // create object of LinkedBlockingQueue 
        LinkedBlockingQueue<String> linkedQueue 
            = new LinkedBlockingQueue<String>(capacityOfQueue); 
  
        // Add element to LinkedBlockingQueue 
        linkedQueue.add("Ravi"); 
        linkedQueue.add("Suraj"); 
        linkedQueue.add("Harsh"); 
  
        // print elements of queue 
        System.out.println("Items in Queue are " + linkedQueue); 
  
        // Try to poll elements from linkedQueue 
        // using poll(long timeout, TimeUnit unit) method 
        System.out.println("Removing item From head: "
                           + linkedQueue.poll(5, TimeUnit.SECONDS)); 
  
        // print queue details 
        System.out.println("Now Queue Contains" + linkedQueue); 
  
        // using poll(long timeout, TimeUnit unit) method 
        System.out.println("Removing item From head: "
                           + linkedQueue.poll(5, TimeUnit.SECONDS)); 
  
        // print queue details 
        System.out.println("Now Queue Contains" + linkedQueue); 
  
        // using poll(long timeout, TimeUnit unit) method 
        System.out.println("Removing item From head: "
                           + linkedQueue.poll(5, TimeUnit.SECONDS)); 
  
        // print queue details 
        System.out.println("Now Queue Contains" + linkedQueue); 
  
        // using poll(long timeout, TimeUnit unit) method 
        System.out.println("Removing item From head: "
                           + linkedQueue.poll(5, TimeUnit.SECONDS)); 
        // print queue details 
        System.out.println("Now Queue Contains" + linkedQueue); 
    } 
}
輸出:
Items in Queue are [Ravi, Suraj, Harsh]

Removing item From head: Ravi
Now Queue Contains[Suraj, Harsh]

Removing item From head: Suraj
Now Queue Contains[Harsh]

Removing item From head: Harsh
Now Queue Contains[]

Removing item From head: null
Now Queue Contains[]

參考:



相關用法


注:本文由純淨天空篩選整理自AmanSingh2210大神的英文原創作品 LinkedBlockingQueue poll() method in Java。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。