IBlockingDeque 接口

定义

Deque它还支持阻止操作,这些操作在检索元素时等待 deque 变为非空,并在存储元素时等待 deque 中可用空间。

[Android.Runtime.Register("java/util/concurrent/BlockingDeque", "", "Java.Util.Concurrent.IBlockingDequeInvoker")]
[Java.Interop.JavaTypeParameters(new System.String[] { "E" })]
public interface IBlockingDeque : IDisposable, Java.Interop.IJavaPeerable, Java.Util.Concurrent.IBlockingQueue, Java.Util.IDeque
[<Android.Runtime.Register("java/util/concurrent/BlockingDeque", "", "Java.Util.Concurrent.IBlockingDequeInvoker")>]
[<Java.Interop.JavaTypeParameters(new System.String[] { "E" })>]
type IBlockingDeque = interface
    interface IBlockingQueue
    interface IQueue
    interface ICollection
    interface IIterable
    interface IJavaObject
    interface IDisposable
    interface IJavaPeerable
    interface IDeque
派生
属性
实现

注解

Deque它还支持阻止操作,这些操作在检索元素时等待 deque 变为非空,并在存储元素时等待 deque 中可用空间。

BlockingDeque 方法采用四种形式,处理操作的方法不同,这些操作不能立即得到满足,但在将来的某个时间点可能会得到满足:一个引发异常,第二个将返回一个特殊值( null 或者 false,根据操作),第三个块无限期地阻止当前线程,直到操作可以成功,并且第四个块在放弃之前只得到给定的最大时间限制。 下表汇总了这些方法:

<table class=“plain”><caption Summary of BlockingDeque methods</caption>><tr><th id=“First” colspan=“5”> First Element (Head)</th></tr<>tr><td/td><>< th id=“FThrow” style=“font-weight:normal; font-style: italic”>Throws exception</th<>th id=“FValue” style=“font-weight:normal; font-style: italic”>Special value</th th><id=“FBlock” style=“font-weight:正常;font-style: italic“>Blocks</th><th id=”FTimes“ style=”font-weight:normal; font-style: italic“>Times out</th></tr tr>><<th id=”FInsert“ style=”text-align:left“>Insert</th><td headers=”First FInsert FThrow“>#addFirst(Object) addFirst(e)</td><td headers=”First FInsert FValue“><#offerFirst(Object) offerFirst(e)/td><td headers=”First FInsert FBlock“><#putFirst(Object) putFirst(e)/td><td headers=”FirstFInsert FTimes“>#offerFirst(Object, long, TimeUnit) offerFirst(e, time, unit)</td></tr><tr><th id=”FRemove“ style=”text-align:left“>Remove</th><td headers=”First FRemove FThrow“>#removeFirst() removeFirst()</td><td headers=”First FRemove FValue“><#pollFirst() pollFirst()/td><td td headers=”First FRemove FBlock“<>#takeFirst() takeFirst()/td<>td headers=”First FRemove FTimes“#pollFirst(long, TimeUnit) pollFirst(time, unit)<>/td></tr<>tr><th id=”FExamine“ style=”text-align:left“>Examine</th><td headers=”First FExamine FThrow“><#getFirst() getFirst()/td><td headers=”First FExamine FValue“><#peekFirst() peekFirst()/td><td headers=”First FExamine FBlock“ style=”font-- style:italic“>不适用</td><td headers=”First FExamine FTimes“ style=”font-style:italic“>not applicable</td></tr><tr><th id=”Last“ colspan=”5”>Last Element (Tail)</th></tr><tr><td/td>><< th id=“LThrow” style=“font-weight:normal; font-style: italic”>Throws exception</th><th id=“LValue” style=“font-weight:normal; font-style: italic”>Special value</th><th id=“LBlock” style=“font-weight:normal; font-style: italic”>Blocks</th><id=“LTimes” style=“font-weight:normal; font-style:italic“>Times out</th></tr><th><id=”LInsert“ style=”text-align:left“>Insert</th><td headers=”Last LInsert LThrow“#addLast(Object) addLast(e)></td><td headers=”Last LInsert LValue“/td><td headers=”Last LInsert LBlock“>#offerLast(Object) offerLast(e)<<#putLast(Object) putLast(e)>/td<>headers=”Last LInsert LTimes“<>#offerLast(Object, long, TimeUnit) offerLast(e, time, unit)/td<>/tr tr<>><th id=“LRemove” style=“text-align:left”>Remove</th><td headers=“Last LRemove LThrow”>#removeLast() removeLast()</td td><td headers=“Last LRemove LValue”<#pollLast() pollLast()>/td td><headers=“Last LRemove LBlock”><#takeLast() takeLast()/td<>td headers=“Last LRemove LTimes”<#pollLast(long, TimeUnit) pollLast(time, unit)>/td></tr><tr><th id=“LExamine” style=“text-align:left”>Examine</th><td headers=“Last LExamine LThrow”>#getLast() getLast()</td><td headers=“Last LExamine LValue”><#peekLast() peekLast()/td><td headers=“Last LExamine LBlock” style=“font-style:italic”>not applicable/td><td headers=“Last LExamine LTimes” style=“font-style:italic”><not applicable</td></tr></table>

与任何 BlockingQueue一样,线程 BlockingDeque 安全,不允许 null 元素,并且可能(或可能)受到容量约束。

BlockingDeque实现可以直接用作 FIFOBlockingQueue。 从 BlockingQueue 接口继承的方法与下表所示的方法完全等效 BlockingDeque

<table class=“plain”>caption Comparison of BlockingQueue and BlockingDeque methods</caption><tr><td/td>><< th id=“BQueue”>BlockingQueue Method</th><id=“BDeque”> Equivalent BlockingDeque Method</th/tr<>tr><th<> id=“Insert” rowspan=“4” style=“text-align:left; vertical-align:top”>Insert</th><th id=“add” style=“font-weight:normal; text-align:left”>></th><td headers=“Insert BDeque add”>#addLast(Object) addLast(e)</td></tr><th id=“offer1” style=“font-weight:normal; text-align:left”<>#offer(Object) offer(e)/th<>td headers=“Insert BDeque offer1”#offerLast(Object) offerLast(e)></td></><tr><<>th id=“put” style=“font-weight:normal; text-align:left”#put(Object) put(e)></th><td headers=“Insert BDeque put”#putLast(Object) putLast(e)></td></tr>#add(Object) add(e)<<tr><th id=“offer2” style=“font-weight:normal;text-align:left“>#offer(Object, long, TimeUnit) offer(e, time, unit)</th><td headers=”Insert BDeque offer2“><#offerLast(Object, long, TimeUnit) offerLast(e, time, unit)/td></tr tr><><th id=”Remove“ rowspan=”4“ style=”text-align:left; vertical-align:top“>Remove</th<>id=”remove“ style=”font-weight:normal; text-align:left“<>#remove() remove()/th<>td headers=”Remove BDeque remove“#removeFirst() removeFirst()<>/td<>/tr<>tr><th id=”poll1“ style=”font-weight:normal;text-align:left“><#poll() poll()/th><td headers=”Remove BDeque poll1“><#pollFirst() pollFirst()/td></tr><tr><th id=”take“ style=”font-weight:normal; text-align:left“><#take() take()/th><td headers=”Remove BDeque take“>#takeFirst() takeFirst()</td></tr tr><><th id=”poll2“ style=”font-weight:normal; text-align:left“><#poll(long, TimeUnit) poll(time, unit)/th><td headers=”删除 BDeque poll2“>#pollFirst(long, TimeUnit) pollFirst(time, unit)</td></tr><th><id=”Examine“ rowspan=”2“ style=”text-align:left; vertical-align:top“>Examine</th<>id=”element“ style=”font-weight:normal; text-align:left“#element() element()></th<>td headers=”Examine BDeque element“#getFirst() getFirst()<>/td<>/tr<>tr><th id=”peek“ style=”font-weight:normal; text-align:left”>#peek() peek()</th><td headers=“检查 BDeque peek”><#peekFirst() peekFirst()/td></tr></table>

内存一致性影响:与其他并发集合一样,在将对象放入 BlockingDeque<i>发生之前</i> 操作之前线程中的操作,然后从 BlockingDeque 另一个线程中访问或删除该元素。

此接口是 Java 集合框架的成员

已在 1.6 中添加。

适用于 . 的 java.util.concurrent.BlockingDequeJava 文档

本页的某些部分是根据 Android 开放源代码项目创建和共享的工作进行的修改,并根据 Creative Commons 2.5 属性许可证中所述的术语使用。

属性

First

检索但不删除此 deque 的第一个元素。

(继承自 IDeque)
Handle

获取基础 Android 对象的 JNI 值。

(继承自 IJavaObject)
IsEmpty

如果不包含 Collection 任何元素,则返回。

(继承自 ICollection)
JniIdentityHashCode

返回包装实例的值 java.lang.System.identityHashCode()

(继承自 IJavaPeerable)
JniManagedPeerState

托管对等方的状态。

(继承自 IJavaPeerable)
JniPeerMembers

成员访问和调用支持。

(继承自 IJavaPeerable)
Last

检索此 deque 的最后一个元素,但不删除。

(继承自 IDeque)
PeerReference

返回 JniObjectReference 包装的 Java 对象实例。

(继承自 IJavaPeerable)

方法

Add(Object)

如果可以立即执行此操作而不违反容量限制,则将此 deque (换句话说,在此 deque 的末尾)所表示的队列中插入指定的元素,并在成功后返回 true ,如果当前没有可用空间,则 IllegalStateException 引发该元素。

AddAll(ICollection)

将指定集合中的所有元素添加到此集合(可选操作)。

(继承自 ICollection)
AddFirst(Object)

如果可以立即执行此操作而不违反容量限制,则在此 deque 的前面插入指定的元素,如果当前没有可用空间,则会 IllegalStateException 引发该元素。

AddLast(Object)

如果可以立即执行此操作而不违反容量限制,则在此 deque 的末尾插入指定的元素,如果当前没有可用空间,则会 IllegalStateException 引发该元素。

Clear()

从此集合中删除所有元素(可选操作)。

(继承自 ICollection)
Contains(Object)

如果 true 此 deque 包含指定的元素,则返回。

ContainsAll(ICollection)

如果 true 此集合包含指定集合中的所有元素,则返回。

(继承自 ICollection)
DescendingIterator()

以反向顺序返回此 deque 中元素的迭代器。

(继承自 IDeque)
Disposed()

在释放实例时调用。

(继承自 IJavaPeerable)
DisposeUnlessReferenced()

如果没有对此实例的未完成引用,则调用 Dispose();否则不执行任何操作。

(继承自 IJavaPeerable)
DrainTo(ICollection)

从此队列中删除所有可用元素,并将其添加到给定集合。

(继承自 IBlockingQueue)
DrainTo(ICollection, Int32)

从此队列中移除最多给定数量的可用元素,并将其添加到给定集合。

(继承自 IBlockingQueue)
Element()

检索此 deque 所表示的队列的头(换句话说,此 deque 的第一个元素)。

Equals(Object)

将指定的对象与此集合进行比较,以便相等。

(继承自 ICollection)
Finalized()

在实例完成时调用。

(继承自 IJavaPeerable)
ForEach(IConsumer)

对每个元素执行给定操作,直到处理完所有元素 Iterable 或该操作引发异常。

(继承自 IIterable)
GetHashCode()

返回此集合的哈希代码值。

(继承自 ICollection)
Iterator()

按正确的顺序返回此 deque 中的元素的迭代器。

Offer(Object)

如果可以立即执行此操作而不违反容量限制,则将此 deque 表示的指定元素插入到由此 deque 的末尾表示的队列中,如果false当前没有可用空间,true则返回。

Offer(Object, Int64, TimeUnit)

将指定的元素插入此 deque 所表示的队列(换句话说,在此 deque 的结尾),等待指定的等待时间(如有必要,空间可用)。

OfferFirst(Object)

如果可以立即执行此操作而不违反容量限制,则在此 deque 的前面插入指定的元素,并在成功后返回 true ,并且 false 当前没有可用空间。

OfferFirst(Object, Int64, TimeUnit)

在此 deque 的前面插入指定的元素,如果需要空间变为可用,则等待指定的等待时间。

OfferLast(Object)

如果可以立即执行此操作而不违反容量限制,则在此 deque 的末尾插入指定的元素,并在成功后返回 true ,并且 false 当前没有可用空间。

OfferLast(Object, Int64, TimeUnit)

在此 deque 的末尾插入指定的元素,如果需要空间变为可用,则等待指定的等待时间。

Peek()

检索(但不删除)此 deque 表示的队列的头(换句话说,此 deque 的第一个元素),或返回 null 此 deque 是否为空。

PeekFirst()

检索但不删除此 deque 的第一个元素,或返回 null 此 deque 为空。

(继承自 IDeque)
PeekLast()

检索但不删除此 deque 的最后一个元素,或返回 null 此 deque 为空。

(继承自 IDeque)
Poll()

检索并删除此 deque 所表示的队列的头(换句话说,此 deque 的第一个元素),或者返回 null 此 deque 为空。

Poll(Int64, TimeUnit)

检索并删除此 deque 所表示的队列的头(换句话说,即此 deque 的第一个元素),等待指定的等待时间(如有必要,使元素变得可用)。

PollFirst()

检索并删除此 deque 的第一个元素,或返回 null 此 deque 是否为空。

(继承自 IDeque)
PollFirst(Int64, TimeUnit)

检索并删除此 deque 的第一个元素,并等待指定的等待时间(如有必要),使元素变得可用。

PollLast()

检索并删除此 deque 的最后一个元素,或返回 null 此 deque 是否为空。

(继承自 IDeque)
PollLast(Int64, TimeUnit)

检索并删除此 deque 的最后一个元素,并等待指定的等待时间(如有必要),使元素变得可用。

Pop()

从此 deque 表示的堆栈中弹出元素。

(继承自 IDeque)
Push(Object)

如果可以立即执行此操作而不违反容量限制,则会将元素推送到由此 deque 的堆栈上(换句话说,位于此 deque 的头),如果当前没有可用空间,则会 IllegalStateException 引发该元素。

Put(Object)

将指定的元素插入由此 deque 表示的队列(换句话说,在此 deque 的结尾),如果需要空间可用,请等待。

PutFirst(Object)

在此 deque 的前面插入指定的元素,如有必要,等待空间变为可用。

PutLast(Object)

在此 deque 的末尾插入指定的元素,如有必要,等待空间变为可用。

RemainingCapacity()

返回此队列理想情况下(在没有内存或资源约束的情况下)接受且没有阻塞或 Integer.MAX_VALUE 没有固有限制的其他元素数。

(继承自 IBlockingQueue)
Remove()

检索并删除此 deque 所表示的队列的头(换句话说,即此 deque 的第一个元素)。

Remove(Object)

从此 deque 中删除指定元素的第一个匹配项。

RemoveAll(ICollection)

删除指定集合中包含的所有此集合元素(可选操作)。

(继承自 ICollection)
RemoveFirst()

检索并删除此 deque 的第一个元素。

(继承自 IDeque)
RemoveFirstOccurrence(Object)

从此 deque 中删除指定元素的第一个匹配项。

RemoveIf(IPredicate)

删除满足给定谓词的此集合的所有元素。

(继承自 ICollection)
RemoveLast()

检索并删除此 deque 的最后一个元素。

(继承自 IDeque)
RemoveLastOccurrence(Object)

从此 deque 中删除指定元素的最后一个匹配项。

RetainAll(ICollection)

仅保留指定集合中包含的此集合中的元素(可选操作)。

(继承自 ICollection)
SetJniIdentityHashCode(Int32)

设置由 JniIdentityHashCode. 返回的值。

(继承自 IJavaPeerable)
SetJniManagedPeerState(JniManagedPeerStates)

Deque它还支持阻止操作,这些操作在检索元素时等待 deque 变为非空,并在存储元素时等待 deque 中可用空间。

(继承自 IJavaPeerable)
SetPeerReference(JniObjectReference)

设置由 PeerReference. 返回的值。

(继承自 IJavaPeerable)
Size()

返回此 deque 中的元素数。

Spliterator()

Spliterator创建由此Iterable描述的元素。

(继承自 IIterable)
Take()

检索并删除此 deque 所表示的队列的头(换句话说,此 deque 的第一个元素),如有必要,请等待,直到某个元素可用。

TakeFirst()

检索并删除此 deque 的第一个元素,如有必要,请等待元素可用。

TakeLast()

检索并删除此 deque 的最后一个元素,如有必要,等待元素变为可用。

ToArray()

返回一个数组,其中包含此集合中的所有元素。

(继承自 ICollection)
ToArray(IIntFunction)

返回包含此集合中的所有元素的数组,该数组使用提供的 generator 函数分配返回的数组。

(继承自 ICollection)
ToArray(Object[])

返回一个数组,其中包含此集合中的所有元素;返回的数组的运行时类型是指定数组的运行时类型。

(继承自 ICollection)
UnregisterFromRuntime()

取消注册此实例,以便运行时不会从将来 Java.Interop.JniRuntime+JniValueManager.PeekValue 的调用中返回它。

(继承自 IJavaPeerable)

显式接口实现

IIterable.Spliterator()

在此集合中的元素上创建一个 Spliterator

(继承自 ICollection)

扩展方法

JavaCast<TResult>(IJavaObject)

执行 Android 运行时检查的类型转换。

JavaCast<TResult>(IJavaObject)

Deque它还支持阻止操作,这些操作在检索元素时等待 deque 变为非空,并在存储元素时等待 deque 中可用空间。

GetJniTypeName(IJavaPeerable)

Deque它还支持阻止操作,这些操作在检索元素时等待 deque 变为非空,并在存储元素时等待 deque 中可用空间。

OfferFirstAsync(IBlockingDeque, Object)

Deque它还支持阻止操作,这些操作在检索元素时等待 deque 变为非空,并在存储元素时等待 deque 中可用空间。

OfferFirstAsync(IBlockingDeque, Object, Int64, TimeUnit)

Deque它还支持阻止操作,这些操作在检索元素时等待 deque 变为非空,并在存储元素时等待 deque 中可用空间。

OfferLastAsync(IBlockingDeque, Object)

Deque它还支持阻止操作,这些操作在检索元素时等待 deque 变为非空,并在存储元素时等待 deque 中可用空间。

OfferLastAsync(IBlockingDeque, Object, Int64, TimeUnit)

Deque它还支持阻止操作,这些操作在检索元素时等待 deque 变为非空,并在存储元素时等待 deque 中可用空间。

PollFirstAsync(IBlockingDeque, Int64, TimeUnit)

Deque它还支持阻止操作,这些操作在检索元素时等待 deque 变为非空,并在存储元素时等待 deque 中可用空间。

PollLastAsync(IBlockingDeque, Int64, TimeUnit)

Deque它还支持阻止操作,这些操作在检索元素时等待 deque 变为非空,并在存储元素时等待 deque 中可用空间。

PutFirstAsync(IBlockingDeque, Object)

Deque它还支持阻止操作,这些操作在检索元素时等待 deque 变为非空,并在存储元素时等待 deque 中可用空间。

PutLastAsync(IBlockingDeque, Object)

Deque它还支持阻止操作,这些操作在检索元素时等待 deque 变为非空,并在存储元素时等待 deque 中可用空间。

TakeFirstAsync(IBlockingDeque)

Deque它还支持阻止操作,这些操作在检索元素时等待 deque 变为非空,并在存储元素时等待 deque 中可用空间。

TakeLastAsync(IBlockingDeque)

Deque它还支持阻止操作,这些操作在检索元素时等待 deque 变为非空,并在存储元素时等待 deque 中可用空间。

OfferAsync(IBlockingQueue, Object)

Deque它还支持阻止操作,这些操作在检索元素时等待 deque 变为非空,并在存储元素时等待 deque 中可用空间。

OfferAsync(IBlockingQueue, Object, Int64, TimeUnit)

Deque它还支持阻止操作,这些操作在检索元素时等待 deque 变为非空,并在存储元素时等待 deque 中可用空间。

PollAsync(IBlockingQueue, Int64, TimeUnit)

Deque它还支持阻止操作,这些操作在检索元素时等待 deque 变为非空,并在存储元素时等待 deque 中可用空间。

PutAsync(IBlockingQueue, Object)

Deque它还支持阻止操作,这些操作在检索元素时等待 deque 变为非空,并在存储元素时等待 deque 中可用空间。

TakeAsync(IBlockingQueue)

Deque它还支持阻止操作,这些操作在检索元素时等待 deque 变为非空,并在存储元素时等待 deque 中可用空间。

ToEnumerable(IIterable)

Deque它还支持阻止操作,这些操作在检索元素时等待 deque 变为非空,并在存储元素时等待 deque 中可用空间。

ToEnumerable<T>(IIterable)

Deque它还支持阻止操作,这些操作在检索元素时等待 deque 变为非空,并在存储元素时等待 deque 中可用空间。

适用于