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


Java LinkedTransferQueue offer()用法及代碼示例


offer(E e, long timeout, TimeUnit unit)

java.util.concurrent.LinkedTransferQueue類的offer(E e,long timeout,TimeUnit unit)方法是Java中的一個內置函數,如果隊列不是,則將作為參數傳遞的元素插入到此隊列的尾部。充分。

  • 如果LinkedTransferQueue已滿,它將等待指定的時間以使空間可用。
  • 指定的等待時間和時間的TimeUnit將作為offer方法的參數給出,因此它將等待那個時間,以便LinkedTransferQueue刪除某些元素,以便offer方法可以將元素添加到LinkedTransferQueue。

用法:

public boolean offer(E e, long timeout, TimeUnit unit)

參數:該函數接受以下參數:


  • e–要插入的元素。
  • timeout
  • unit–確定如何解釋超時參數的TimeUnit

返回值:該方法返回布爾值true。由於隊列是無界的,因此此方法將永遠不會阻塞或返回false。

異常:當指定的元素為Null時,該函數將顯示NullPointerException。

以下程序說明了java.util.concurrent.LinkedTransferQueue.offer()的用法:

示例1:通過使用offer(E e,long timeout,TimeUnit unit)方法插入學生的姓名來創建LinkedTransferQueue,該方法的timeunit參數以秒為單位,timeout參數為5sec

// Java Program Demonstrate offer() 
// method of LinkedTransferQueue 
  
import java.util.concurrent.*; 
  
class GFG { 
    public static void main(String[] args) 
        throws InterruptedException 
    { 
  
        // create object of LinkedTransferQueue 
        LinkedTransferQueue<Integer> 
            queue = new LinkedTransferQueue<Integer>(); 
  
        // Add 5 elements to ArrayBlockingQueue having 
        // Timeout in seconds with value 5 secs in 
        // offer(Element e, long timeout, TimeUnit unit) 
  
        System.out.println("adding 15 "
                           + queue.offer(15, 5, TimeUnit.SECONDS)); 
        System.out.println("adding 25: "
                           + queue.offer(25, 5, TimeUnit.SECONDS)); 
        System.out.println("adding 35: "
                           + queue.offer(35, 5, TimeUnit.SECONDS)); 
        System.out.println("adding 45: "
                           + queue.offer(45, 5, TimeUnit.SECONDS)); 
        System.out.println("adding 55: "
                           + queue.offer(55, 5, TimeUnit.SECONDS)); 
  
        // print the elements of queue 
        System.out.println("list of numbers of queue: "
                           + queue); 
    } 
}
輸出:
adding 15 true
adding 25: true
adding 35: true
adding 45: true
adding 55: true
list of numbers of queue: [15, 25, 35, 45, 55]

示例2:顯示NullPointerException的程序。

// Java Program Demonstrate offer() 
// method of LinkedTransferQueue 
  
import java.util.concurrent.*; 
  
class GFG { 
    public static void main(String[] args) 
        throws InterruptedException 
    { 
  
        // Initializing the queue 
        LinkedTransferQueue<Integer> 
            queue = new LinkedTransferQueue<Integer>(); 
  
        // add elements to queue 
        try { 
            queue.offer(null, 5, TimeUnit.SECONDS); 
        } 
        catch (Exception e) { 
            System.out.println("Exception: " + e); 
        } 
    } 
}
輸出:
Exception: java.lang.NullPointerException

offer(E e)

java.util.concurrent.LinkedTransferQueue類的offer(E e)方法是Java中的內置函數,如果隊列有空間,即Queue未滿,則將作為參數傳遞的元素e插入此LinkedTransferQueue的方法的尾部。如果隊列已滿,則應用offer()方法無效,因為LinkedTransferQueue將阻止要插入的元素。當對LinkedTransferQueue的加法操作成功時,offer()方法返回true;如果此隊列已滿,則方法返回false。此方法優於add()方法,因為在隊列已滿時add方法會引發錯誤,但在這種情況下offer()方法將返回false。

用法:

public boolean offer(E e)

參數:該函數接受單個參數,即要插入的元素。


返回值:成功插入後,該方法返回true。

異常:當指定的元素為Null時,該函數將顯示NullPointerException。

示例1:在隊列中添加字符串。

// Java Program Demonstrate offer() 
// method of LinkedTransferQueue 
  
import java.util.concurrent.*; 
  
class GFG { 
    public static void main(String[] args) 
    { 
  
        // Initializing the queue 
        LinkedTransferQueue<String> 
            queue = new LinkedTransferQueue<String>(); 
  
        // Adding elements to this queue 
        queue.offer("alex"); 
        queue.offer("bob"); 
        queue.offer("chuck"); 
        queue.offer("drake"); 
        queue.offer("eric"); 
  
        // Printing the elements of the queue 
        System.out.print("Queue: "); 
        for (String i : queue) 
            System.out.print(i + " "); 
    } 
}
輸出:
Queue: alex bob chuck drake eric

示例2:顯示NullPointerException的程序。

// Java Program Demonstrate offer() 
// method of LinkedTransferQueue 
  
import java.util.concurrent.LinkedTransferQueue; 
  
class GFG { 
    public static void main(String[] args) 
        throws InterruptedException 
    { 
  
        // Initializing the queue 
        LinkedTransferQueue<Integer> 
            queue = new LinkedTransferQueue<Integer>(); 
  
        // add elements to queue 
        queue.offer(10); 
        queue.offer(20); 
        queue.offer(30); 
  
        try { 
            queue.offer(null); 
        } 
        catch (Exception e) { 
            System.out.println("Exception: " + e); 
        } 
    } 
}
輸出:
Exception: java.lang.NullPointerException

參考: https://docs.oracle.com/javase/7/docs/api/java/util/concurrent/LinkedTransferQueue.html#offer(E)
https://docs.oracle.com/javase/7/docs/api/java/util/concurrent/LinkedTransferQueue.html#offer(E,%20long,%20java.util.concurrent.TimeUnit)



相關用法


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