Java LinkedTransferQueue drainTo()方法
drainTo(Collection c)
java.util.concurrent.LinkedTransferQueue类的 drainTo(Collection c) 方法是Java中的一个内置函数,它可以移除这个队列中的所有元素,并将它们添加到提供的集合中。这是一个比反复轮询这个队列更有效的方法。
当试图从队列中添加元素到集合c时,也有可能遇到失败,由于失败,当相关的异常被抛出时,元素被分配到两个集合中。如果一个队列试图向队列本身drainTo(),那么将抛出 IllegalArgumentException 。如果在操作过程中,指定的集合被修改,那么这个操作的行为就无法定义。所以在使用这类方法时,需要注意这类情况以克服异常。
语法
参数: 该函数接受一个强制性参数c,它是要被转移到的元素的集合。
返回值: 该函数返回从队列中排入集合的元素的数量。
异常: 该方法抛出以下异常。
- NullPointerException – 如果集合是空的
- IllegalArgumentException – 如果该方法的参数阻止它被添加到指定的集合中。
下面的程序说明了java.util.concurrent.LinkedTransferQueue.drainTo()方法的使用。
程序 1: 程序将队列中的所有元素排到指定的集合中。
输出:
程序2: 显示drainTo()中NullPointerException的程序。
输出:
drainTo(Collection c, int maxElements)
java.util.concurrent.LinkedTransferQueue的 drainTo(Collection c, int maxElements) 方法是Java中的一个内置函数,用于将固定数量的元素(在drainTo()中以整数形式传递给集合,也作为参数传递给方法。在转移元素之后,LinkedTransferQueue只有那些没有转移到集合中的元素。这个函数与上面的函数相同,只是在传输固定数量的元素时有一些限制。
语法
参数:该方法接受两个参数。
- c – 它表示要从LinkedTransferQueue转移元素的集合。
- maxElements – 这是一个整数类型,指的是要转移到集合中的最大元素数。
返回值:该函数返回从队列中排入集合的元素数量。
异常:该方法会抛出以下异常。
**NullPointerException** - 如果集合是空的。
**IllegalArgumentException** - 如果该方法的参数阻止它被添加到指定的集合中。
示例1:程序从队列中最多抽取给定数量的可用元素到指定的集合中。
输出:
程序2: 显示drainTo()中NullPointerException的程序。
输出:
参考资料
- https://docs.oracle.com/javase/7/docs/api/java/util/concurrent/LinkedTransferQueue.html#drainTo(java.util.Collection)
- https://docs.oracle.com/javase/7/docs/api/java/util/concurrent/LinkedTransferQueue.html#drainTo(java.util.Collection, %20int)