Java LinkedTransferQueue tryTransfer()方法及示例
LinkedTransferQueue类的 tryTransfer() 方法是Java中的一个内置函数,通常用于将一个元素转移到等待接收它的线程中,如果没有线程在等待,那么它将在不将元素加入队列的情况下终止,或者你也可以通过向函数传递时间量及其单位来使它等待一定的时间。
在LinkedTransferQueue类中,根据传递给它的参数,有两种类型的 tryTransfer()方法。
tryTransfer(E e )
通常用于将一个元素转移到一个处于等待状态的线程,如果没有线程在等待,那么它将终止,而不将元素添加到队列中
语法:
参数:
- 这里 E e 是要被转移到处于等待状态的线程的元素。
返回值 :该方法将返回一个 布尔值 ,即如果元素被转移,则为真,否则为假。
异常 :该方法将抛出以下异常。
- NullPointerException – 如果指定的元素是空的。
- InterruptedException – 如果在等待过程中被打断,在这种情况下,元素不会被留在队列中。
下面的程序说明了Java中简单的LinkedTransferQueue.tryTransfer()方法:
程序1: 说明Java中tryTransfer()方法。
输出
程序2: NullPointerException。
输出
tryTransfer(E e, long timeout, TimeUnit)
通常用于将一个元素转移到一个处于等待状态的线程,如果没有线程在等待,那么它将等待一定的时间,将时间量及其单位作为参数传递给函数。
语法:
参数: 该方法接受三个强制性参数:
- 这里 E e 是要传输给处于等待状态的线程的元素。
- 这里的 long timeout 是指它在终止前应该等待的时间量。
- 这里的 TimeUnit单位 是指长超时的单位。
返回值: 该方法将返回一个 布尔值。 如果元素被转移,它返回true,否则返回false。
异常 :这个方法将抛出以下异常。
- NullPointerException – 如果指定的元素是空的。
- InterruptedException – 如果在等待时被中断,在这种情况下,元素不会被留下排队。
程序1: 通过设置waiting为参数来说明Java中的tryTransfer()方法。
输出
程序2: NullPointerException。
输出
参考文献:
- https://docs.oracle.com/javase/7/docs/api/java/util/concurrent/LinkedTransferQueue.html#tryTransfer(E)
- https://docs.oracle.com/javase/7/docs/api/java/util/concurrent/LinkedTransferQueue.html#tryTransfer(E, %20long, %20java.util.concurrent.TimeUnit)