IBlockingDeque 接口
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
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 |
如果不包含 |
| JniIdentityHashCode |
返回包装实例的值 |
| JniManagedPeerState |
托管对等方的状态。 (继承自 IJavaPeerable) |
| JniPeerMembers |
成员访问和调用支持。 (继承自 IJavaPeerable) |
| Last |
检索此 deque 的最后一个元素,但不删除。 (继承自 IDeque) |
| PeerReference |
返回 JniObjectReference 包装的 Java 对象实例。 (继承自 IJavaPeerable) |
方法
| Add(Object) |
如果可以立即执行此操作而不违反容量限制,则将此 deque (换句话说,在此 deque 的末尾)所表示的队列中插入指定的元素,并在成功后返回 |
| AddAll(ICollection) |
将指定集合中的所有元素添加到此集合(可选操作)。 (继承自 ICollection) |
| AddFirst(Object) |
如果可以立即执行此操作而不违反容量限制,则在此 deque 的前面插入指定的元素,如果当前没有可用空间,则会 |
| AddLast(Object) |
如果可以立即执行此操作而不违反容量限制,则在此 deque 的末尾插入指定的元素,如果当前没有可用空间,则会 |
| Clear() |
从此集合中删除所有元素(可选操作)。 (继承自 ICollection) |
| Contains(Object) |
如果 |
| ContainsAll(ICollection) |
如果 |
| DescendingIterator() |
以反向顺序返回此 deque 中元素的迭代器。 (继承自 IDeque) |
| Disposed() |
在释放实例时调用。 (继承自 IJavaPeerable) |
| DisposeUnlessReferenced() |
如果没有对此实例的未完成引用,则调用 |
| DrainTo(ICollection) |
从此队列中删除所有可用元素,并将其添加到给定集合。 (继承自 IBlockingQueue) |
| DrainTo(ICollection, Int32) |
从此队列中移除最多给定数量的可用元素,并将其添加到给定集合。 (继承自 IBlockingQueue) |
| Element() |
检索此 deque 所表示的队列的头(换句话说,此 deque 的第一个元素)。 |
| Equals(Object) |
将指定的对象与此集合进行比较,以便相等。 (继承自 ICollection) |
| Finalized() |
在实例完成时调用。 (继承自 IJavaPeerable) |
| ForEach(IConsumer) |
对每个元素执行给定操作,直到处理完所有元素 |
| GetHashCode() |
返回此集合的哈希代码值。 (继承自 ICollection) |
| Iterator() |
按正确的顺序返回此 deque 中的元素的迭代器。 |
| Offer(Object) |
如果可以立即执行此操作而不违反容量限制,则将此 deque 表示的指定元素插入到由此 deque 的末尾表示的队列中,如果 |
| Offer(Object, Int64, TimeUnit) |
将指定的元素插入此 deque 所表示的队列(换句话说,在此 deque 的结尾),等待指定的等待时间(如有必要,空间可用)。 |
| OfferFirst(Object) |
如果可以立即执行此操作而不违反容量限制,则在此 deque 的前面插入指定的元素,并在成功后返回 |
| OfferFirst(Object, Int64, TimeUnit) |
在此 deque 的前面插入指定的元素,如果需要空间变为可用,则等待指定的等待时间。 |
| OfferLast(Object) |
如果可以立即执行此操作而不违反容量限制,则在此 deque 的末尾插入指定的元素,并在成功后返回 |
| OfferLast(Object, Int64, TimeUnit) |
在此 deque 的末尾插入指定的元素,如果需要空间变为可用,则等待指定的等待时间。 |
| Peek() |
检索(但不删除)此 deque 表示的队列的头(换句话说,此 deque 的第一个元素),或返回 |
| PeekFirst() |
检索但不删除此 deque 的第一个元素,或返回 |
| PeekLast() |
检索但不删除此 deque 的最后一个元素,或返回 |
| Poll() |
检索并删除此 deque 所表示的队列的头(换句话说,此 deque 的第一个元素),或者返回 |
| Poll(Int64, TimeUnit) |
检索并删除此 deque 所表示的队列的头(换句话说,即此 deque 的第一个元素),等待指定的等待时间(如有必要,使元素变得可用)。 |
| PollFirst() |
检索并删除此 deque 的第一个元素,或返回 |
| PollFirst(Int64, TimeUnit) |
检索并删除此 deque 的第一个元素,并等待指定的等待时间(如有必要),使元素变得可用。 |
| PollLast() |
检索并删除此 deque 的最后一个元素,或返回 |
| PollLast(Int64, TimeUnit) |
检索并删除此 deque 的最后一个元素,并等待指定的等待时间(如有必要),使元素变得可用。 |
| Pop() |
从此 deque 表示的堆栈中弹出元素。 (继承自 IDeque) |
| Push(Object) |
如果可以立即执行此操作而不违反容量限制,则会将元素推送到由此 deque 的堆栈上(换句话说,位于此 deque 的头),如果当前没有可用空间,则会 |
| Put(Object) |
将指定的元素插入由此 deque 表示的队列(换句话说,在此 deque 的结尾),如果需要空间可用,请等待。 |
| PutFirst(Object) |
在此 deque 的前面插入指定的元素,如有必要,等待空间变为可用。 |
| PutLast(Object) |
在此 deque 的末尾插入指定的元素,如有必要,等待空间变为可用。 |
| RemainingCapacity() |
返回此队列理想情况下(在没有内存或资源约束的情况下)接受且没有阻塞或 |
| 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) |
设置由 |
| SetJniManagedPeerState(JniManagedPeerStates) |
|
| SetPeerReference(JniObjectReference) |
设置由 |
| Size() |
返回此 deque 中的元素数。 |
| Spliterator() |
|
| Take() |
检索并删除此 deque 所表示的队列的头(换句话说,此 deque 的第一个元素),如有必要,请等待,直到某个元素可用。 |
| TakeFirst() |
检索并删除此 deque 的第一个元素,如有必要,请等待元素可用。 |
| TakeLast() |
检索并删除此 deque 的最后一个元素,如有必要,等待元素变为可用。 |
| ToArray() |
返回一个数组,其中包含此集合中的所有元素。 (继承自 ICollection) |
| ToArray(IIntFunction) |
返回包含此集合中的所有元素的数组,该数组使用提供的 |
| ToArray(Object[]) |
返回一个数组,其中包含此集合中的所有元素;返回的数组的运行时类型是指定数组的运行时类型。 (继承自 ICollection) |
| UnregisterFromRuntime() |
取消注册此实例,以便运行时不会从将来 Java.Interop.JniRuntime+JniValueManager.PeekValue 的调用中返回它。 (继承自 IJavaPeerable) |
显式接口实现
| IIterable.Spliterator() |
在此集合中的元素上创建一个 |
扩展方法
| JavaCast<TResult>(IJavaObject) |
执行 Android 运行时检查的类型转换。 |
| JavaCast<TResult>(IJavaObject) |
|
| GetJniTypeName(IJavaPeerable) |
|
| OfferFirstAsync(IBlockingDeque, Object) |
|
| OfferFirstAsync(IBlockingDeque, Object, Int64, TimeUnit) |
|
| OfferLastAsync(IBlockingDeque, Object) |
|
| OfferLastAsync(IBlockingDeque, Object, Int64, TimeUnit) |
|
| PollFirstAsync(IBlockingDeque, Int64, TimeUnit) |
|
| PollLastAsync(IBlockingDeque, Int64, TimeUnit) |
|
| PutFirstAsync(IBlockingDeque, Object) |
|
| PutLastAsync(IBlockingDeque, Object) |
|
| TakeFirstAsync(IBlockingDeque) |
|
| TakeLastAsync(IBlockingDeque) |
|
| OfferAsync(IBlockingQueue, Object) |
|
| OfferAsync(IBlockingQueue, Object, Int64, TimeUnit) |
|
| PollAsync(IBlockingQueue, Int64, TimeUnit) |
|
| PutAsync(IBlockingQueue, Object) |
|
| TakeAsync(IBlockingQueue) |
|
| ToEnumerable(IIterable) |
|
| ToEnumerable<T>(IIterable) |
|