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 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.BlockingDeque
Java 檔。
此頁面的部分是根據 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) |
如果可以立即這麼做,而不違反容量限制,傳回成功 |
AddAll(ICollection) |
將指定集合中的所有專案加入至這個集合(選擇性作業)。 (繼承來源 ICollection) |
AddFirst(Object) |
如果可以立即不違反容量限制,請將指定的專案插入這個 deque 的前面,如果目前沒有可用空間,則會 |
AddLast(Object) |
如果可以立即這麼做而不違反容量限制,請在這個 deque 結尾插入指定的專案,如果目前沒有可用空間,則會 |
Clear() |
從這個集合中移除所有專案(選擇性作業)。 (繼承來源 ICollection) |
Contains(Object) |
如果這個 deque 包含指定的專案, 則傳 |
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,而不違反容量限制、在成功時傳回 |
Offer(Object, Int64, TimeUnit) |
將指定的專案插入這個 deque 所代表的佇列中(換句話說,在這個 deque 的結尾處),視需要等待指定的等候時間,讓空間變成可用。 |
OfferFirst(Object) |
如果可以立即執行此 deque,而不違反容量限制、在成功時傳回 |
OfferFirst(Object, Int64, TimeUnit) |
在此 deque 前面插入指定的項目,視需要等待空間可供使用,等候指定的等候時間。 |
OfferLast(Object) |
如果可以立即執行,而不違反容量限制、在成功時傳回 |
OfferLast(Object, Int64, TimeUnit) |
在此 deque 結尾插入指定的項目,視需要等待空間可供使用時,等候指定的等候時間。 |
Peek() |
擷取但不會移除此 deque 所代表的佇列前端(換句話說,此 deque 的第一個專案),如果 deque 是空的,則傳回 |
PeekFirst() |
擷取但不會移除這個 deque 的第一個專案,如果 deque 是空的,則傳回 |
PeekLast() |
擷取但不會移除這個 deque 的最後一個專案,如果 deque 是空的,則傳回 |
Poll() |
擷取並移除這個 deque 所代表的佇列前端(換句話說,這個 deque 的第一個專案),如果 deque 是空的,則傳回 |
Poll(Int64, TimeUnit) |
擷取並移除這個 deque 所代表之佇列的前端(換句話說,此 deque 的第一個專案),視需要等候指定的等候時間,讓專案可供使用。 |
PollFirst() |
擷取並移除這個 deque 的第一個專案,如果 deque 是空的,則傳 |
PollFirst(Int64, TimeUnit) |
擷取並移除這個 deque 的第一個專案,視需要等候指定的等候時間,讓專案可供使用。 |
PollLast() |
擷取並移除這個 deque 的最後一個專案,如果 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) |
|