共用方式為


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 方法有四種形式,具有無法立即滿足的不同處理作業方式,但在未來某個時間點可能會滿足:一個擲回例外狀況,第二個會傳回特殊值( nullfalse,視作業而定),第三個會無限期地封鎖目前線程,直到作業可以成功,而第四個區塊在放棄之前只會有指定的最大時間限制。 下表摘要說明這些方法:

<table class=“plain”caption 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<>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“>Check</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“>not applicable</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“<>#offerLast(Object) offerLast(e)/td td headers=”Last LInsert LBlock“<>#putLast(Object) putLast(e)/td<><>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><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”>Check</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 作可以直接當做 FIFO BlockingQueue使用。 繼承自 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”>><#add(Object) add(e)</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><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 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 tr>><<th id=”Check“ rowspan=”2“ style=”text-align:left; vertical-align:top“>Check</th><id=”element“ style=”font-weight:normal; text-align:left>#element() element()<“/th><td headers=”Check BDeque 元素“<>#getFirst() getFirst()/td></tr><tr tr><th id=”peek“ style=”font-weight:normal; text-align:left”>#peek() peek()</th><td headers=“Check BDeque peek”><#peekFirst() peekFirst()/td></tr></table>

記憶體一致性效果:如同其他並行集合一樣,將物件放入 i>發生<前/i> 動作之後,線程中的動作會從BlockingDeque另一BlockingDeque<個線程中的 存取或移除該元素。

這個介面是 Java Collections Framework 的成員

已在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)

如果可以立即這麼做,而不違反容量限制,傳回成功IllegalStateException,並在目前沒有可用空間時擲回 true ,請將指定的專案插入這個 deque 所代表的佇列中(換句話說,在此 deque 結尾處)。

AddAll(ICollection)

將指定集合中的所有專案加入至這個集合(選擇性作業)。

(繼承來源 ICollection)
AddFirst(Object)

如果可以立即不違反容量限制,請將指定的專案插入這個 deque 的前面,如果目前沒有可用空間,則會 IllegalStateException 擲回 。

AddLast(Object)

如果可以立即這麼做而不違反容量限制,請在這個 deque 結尾插入指定的專案,如果目前沒有可用空間,則會 IllegalStateException 擲回 。

Clear()

從這個集合中移除所有專案(選擇性作業)。

(繼承來源 ICollection)
Contains(Object)

如果這個 deque 包含指定的專案, 則傳 true 回 。

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,而不違反容量限制、在成功時傳回 true ,以及 false 目前沒有可用空間,請將指定的專案插入這個 deque 所代表的佇列中(換句話說,在此 deque 結尾處)。

Offer(Object, Int64, TimeUnit)

將指定的專案插入這個 deque 所代表的佇列中(換句話說,在這個 deque 的結尾處),視需要等待指定的等候時間,讓空間變成可用。

OfferFirst(Object)

如果可以立即執行此 deque,而不違反容量限制、在成功時傳回 true ,而且 false 目前沒有可用空間,請將指定的專案插入這個 deque 前面。

OfferFirst(Object, Int64, TimeUnit)

在此 deque 前面插入指定的項目,視需要等待空間可供使用,等候指定的等候時間。

OfferLast(Object)

如果可以立即執行,而不違反容量限制、在成功時傳回 true ,而且 false 目前沒有可用空間,請在這個 deque 的結尾插入指定的專案。

OfferLast(Object, Int64, TimeUnit)

在此 deque 結尾插入指定的項目,視需要等待空間可供使用時,等候指定的等候時間。

Peek()

擷取但不會移除此 deque 所代表的佇列前端(換句話說,此 deque 的第一個專案),如果 deque 是空的,則傳回 null

PeekFirst()

擷取但不會移除這個 deque 的第一個專案,如果 deque 是空的,則傳回 null

(繼承來源 IDeque)
PeekLast()

擷取但不會移除這個 deque 的最後一個專案,如果 deque 是空的,則傳回 null

(繼承來源 IDeque)
Poll()

擷取並移除這個 deque 所代表的佇列前端(換句話說,這個 deque 的第一個專案),如果 deque 是空的,則傳回 null

Poll(Int64, TimeUnit)

擷取並移除這個 deque 所代表之佇列的前端(換句話說,此 deque 的第一個專案),視需要等候指定的等候時間,讓專案可供使用。

PollFirst()

擷取並移除這個 deque 的第一個專案,如果 deque 是空的,則傳 null 回 。

(繼承來源 IDeque)
PollFirst(Int64, TimeUnit)

擷取並移除這個 deque 的第一個專案,視需要等候指定的等候時間,讓專案可供使用。

PollLast()

擷取並移除這個 deque 的最後一個專案,如果 deque 是空的,則傳 null 回 。

(繼承來源 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 中可用的空間。

適用於