当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。