Java中的LinkedTransferQueue offer()方法

Java中的LinkedTransferQueue offer()方法

offer(E e, long timeout, TimeUnit unit)

java.util.concurrent.LinkedTransferQueue类中的 offer(E e, long timeout, TimeUnit unit) 方法是Java中的内置函数,如果队列未满,则将传递给方法的元素插入到此队列的尾部。

  • 如果LinkedTransferQueue已满,则它将等待一定时间以使空间变得可用。
  • 指定时间和时间单位以解释超时参数将作为参数提供给offer方法,因此它将等待该时间,以便LinkedTransferQueue可以删除一些元素,以便offer方法可以将元素添加到LinkedTransferQueue中。

语法:

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

参数: 该函数接受以下参数:

  • e – 要插入的元素。
  • timeout
  • unit – 一个TimeUnit,用于确定如何解释超时参数

返回值: 本方法返回布尔值true。由于队列不受限制,因此此方法永远不会阻塞或返回false。

异常: 当指定的元素为null时,该函数会引发 NullPointerException

下面的程序说明了Java中java.util.concurrent.LinkedTransferQueue.offer()的使用:

程序1: 使用offer(E e,long timeout,TimeUnit unit)方法创建LinkedTransferQueue,将学生姓名插入队列,其中timeunit参数以秒为单位,timeout参数为5秒。

// 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);
        }
    }
}
异常:java.lang.NullPointerException

offer(E e)

java.util.concurrent.LinkedTransferQueue类中的 offer(E e) 方法是Java中的内置函数,如果队列没有满,则将传递给该方法的元素e插入到此LinkedTransferQueue的末尾。如果队列已满,则应用offer()方法不会产生任何影响,因为LinkedTransferQueue会阻止要插入的元素。当成功向LinkedTransferQueue添加操作时,offer()方法返回true,如果此队列已满,则返回false。在队列已满的情况下,此方法优于add()方法,因为add方法在队列已满的情况下会抛出错误,但offer()方法在这种情况下返回false。

语法:

public boolean offer(E e)

参数: 该函数接受一个e参数,即要插入的元素。

返回值: 方法在成功插入时返回true。

异常: 如果指定的元素为空,该函数会显示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 + " ");
    }
}
队列: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,%20%20long,%20%20java.util.concurrent.TimeUnit)

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程