IBlockingDeque 介面
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
Deque A還支援阻塞操作,即在取回元素時等待排隊列非空,並在儲存元素時等待排隊列中空位。
[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
interface ISequencedCollection
- 衍生
- 屬性
- 實作
備註
Deque A還支援阻塞操作,即在取回元素時等待排隊列非空,並在儲存元素時等待排隊列中空位。
BlockingDeque方法有四種形式,處理操作的方式不同,無法立即滿足,但未來某時可能被滿足:一種拋出例外,另一種回傳特殊值(視操作而nullfalse定為 或 ),第三種會無限阻擋當前執行緒直到操作成功,第四種則只阻塞指定的最大時間限制後放棄。 這些方法總結於下表:
<table class=“plain”><caption>blockingDeque 方法<摘要/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”特殊值/th th id =“FBlock” style=“font-weight: italic”>特殊值</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“><>/td#addFirst(Object) addFirst(e)<td headers=”First FInsert FValue“><>/td#offerFirst(Object) offerFirst(e)<td headers=”First FInsert FBlock“><>/td#putFirst(Object) putFirst(e)<td headers=”First><FInsert 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“Examine/th><td headers=”First FExamine FThrow“><>/td#getFirst() getFirst()<td headers=”First FExamine FValue“><>/td#peekFirst() peekFirst()<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”><>最後元素(尾部)</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><th th id=“LTimes” style=“font-weight:normal;font-style:italic“>Times out</th></tr><tr><th id=”LInsert“ style=”text-align:left“>Insert</th><td headers=”Last Lnsert 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”<Examine>/th<><td headers=“最後的 LExamine LThrow”>#getLast() getLast()</td td 標頭=“最後的 LExamine LValue”><>/td#peekLast() peekLast()<td 標頭=“最後的 LExamine LBlock” style=“font-style:italic”>not applicable</td><td headers=“Last LExamine LTimes” style=“font-style:italic”>not applicable</td></tr></table><>
如同任何 BlockingQueue,a BlockingDeque 是執行緒安全的,不允許空元素,且可能(也可能不)受容量限制。
實 BlockingDeque 作可直接用作 FIFO BlockingQueue。 從 BlockingQueue 介面繼承的方法與下表所示方法完全等價 BlockingDeque :
<table class=“plain”><caption>BlockingQueue 與 BlockingDeque 方法</caption><tr><td></td><th id=“BQueue”>BlockingQueue 方法</th><th id =“BDeque”> 等效BlockingDeque方法< / 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#add(Object) add(e)<td headers=“Insert BDeque add”><>/td#addLast(Object) addLast(e)</tr><tr th><id=“offer1” style=“font-weight:normal; text-align:left”><>/th#offer(Object) offer(e)<td headers=“Insert BDeque offer1”><>/td#offerLast(Object) offerLast(e)</tr><tr><th id=“put” style=“font-weight:normal; text-align:left”><>/th#put(Object) put(e)<td headers=“Insert BDeque put”><>/td#putLast(Object) putLast(e)</tr><><翻譯><th id=“offer2” style=“font-weight:normal;text-align:left“>#offer(Object, long, TimeUnit) offer(e, time, unit)</th><td headers=”插入 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><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><tr th><id=”Examine“ rowspan=”2“ style=”text-align:left; vertical-align:top“>Examine</th><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=“Examine BDeque peek”>#peekFirst() peekFirst()</td></tr></table>
記憶體一致性效應:與其他並行集合一樣,執行緒中在將物件放入 BlockingDeque<i><> 之前/i 之前的動作,發生在該元素BlockingDeque從另一個執行緒中移除後。
此介面是 Java 集合框架的成員。
新增於1.6版本。
Java 文件 java.util.concurrent.BlockingDeque。
本頁部分內容為基於 Open Source Project 所創建與分享的作品,並依授權條款所描述的使用進行修改。
屬性
| 名稱 | Description |
|---|---|
| First |
取回但不移除這個雙排的第一元素。 (繼承來源 IDeque) |
| Handle |
取得底層 Android 物件的 JNI 值。 (繼承來源 IJavaObject) |
| IsEmpty |
若此處 |
| JniIdentityHashCode |
回傳包裹實例的 |
| JniManagedPeerState |
管理貴族的狀況。 (繼承來源 IJavaPeerable) |
| JniObjectReferenceControlBlock |
|
| JniPeerMembers |
成員存取與召喚支援。 (繼承來源 IJavaPeerable) |
| Last |
取回但不移除這個雙排的最後一個元素。 (繼承來源 IDeque) |
| PeerReference |
回傳JniObjectReference包裹後的 Java 物件實例。 (繼承來源 IJavaPeerable) |
方法
| 名稱 | Description |
|---|---|
| Add(Object) |
若可立即插入且不違反容量限制,則將指定元素插入由該排隊代表的佇列(換言之,排隊尾部),成功後返回 |
| AddAll(ICollection) |
將指定集合中的所有元素加入此集合(可選操作)。 (繼承來源 ICollection) |
| AddFirst(Object) |
若能立即插入且不違反容量限制,則將指定元素置於此排隊前端,若目前無空間則投擲 。 |
| AddLast(Object) |
若可立即插入且不違反容量限制,則在排隊尾插入指定元素,若目前無空間則拋棄 。 |
| Clear() |
移除此集合中的所有元素(可選操作)。 (繼承來源 ICollection) |
| Contains(Object) |
若此排隊包含指定元素,則回傳 |
| ContainsAll(ICollection) |
若此集合包含指定集合中的所有元素,則回傳 |
| DescendingIterator() |
以反向順序回傳此雙線中元素的迭代器。 (繼承來源 IDeque) |
| Disposed() |
當實例被處理後才被召喚。 (繼承來源 IJavaPeerable) |
| DisposeUnlessReferenced() |
如果沒有未解決的參考資料,則 |
| DrainTo(ICollection, Int32) |
最多從該佇列中移除指定數量的可用元素,並將其加入給定的集合中。 (繼承來源 IBlockingQueue) |
| DrainTo(ICollection) |
從此佇列中移除所有可用元素,並將其加入給定的集合中。 (繼承來源 IBlockingQueue) |
| Element() |
回收但不移除由此排隊代表的隊列首(換言之,該排隊的第一個元素)。 |
| Equals(Object) |
比較指定物件與此集合以求相等。 (繼承來源 ICollection) |
| Finalized() |
當實例完成後才會被通知。 (繼承來源 IJavaPeerable) |
| ForEach(IConsumer) |
對每個元素 |
| GetFirst() |
取得這個集合的第一個元素。 (繼承來源 ISequencedCollection) |
| GetHashCode() |
回傳此集合的雜湊碼值。 (繼承來源 ICollection) |
| GetLast() |
拿到這個合集的最後一個元素。 (繼承來源 ISequencedCollection) |
| Iterator() |
回傳對該雙線中元素的迭代器,按正確順序。 |
| Offer(Object, Int64, TimeUnit) |
將指定元素插入由該排隊代表的隊列中(換言之,排隊尾部),若有需要,等待指定等待時間以待空間可用。 |
| Offer(Object) |
若能立即插入且不違反容量限制、成功後返回 |
| OfferFirst(Object, Int64, TimeUnit) |
在此排隊前插入指定元素,必要時等待指定時間以待空間。 |
| OfferFirst(Object) |
若可立即插入且不違反容量限制,則將指定元素置入該排隊前方,成功後 |
| OfferLast(Object, Int64, TimeUnit) |
在此排隊結束時插入指定元素,必要時等待指定時間以待空間。 |
| OfferLast(Object) |
若可立即插入且不違反容量限制,則在完成後返回 |
| Peek() |
取回但不移除由此排隊代表的隊列首(換言之,該排隊的第一個元素),若排隊為空,則返回 |
| PeekFirst() |
回收但不移除該排隊的第一個元素,若排隊為空則返回 |
| PeekLast() |
取回但不移除這個雙排的最後一個元素,若此排隊為空則返回 |
| Poll() |
擷取並移除由該排隊代表的隊列首(換言之,該排隊的第一個元素),若排隊為空,則返回 |
| Poll(Int64, TimeUnit) |
擷取並移除由此排隊代表的佇列頭部(換言之,該排隊的第一個元素),必要時等待至指定等待時間,以待該元素可用。 |
| PollFirst() |
取回並移除這個雙點的第一個元素,或如果這個雙點為空,則返回 |
| PollFirst(Int64, TimeUnit) |
擷取並移除該 deque 的第一個元素,必要時等待指定時間以待該元素可用。 |
| PollLast() |
取回並移除該雙線的最後一個元素,或若此雙線為空則返回 |
| PollLast(Int64, TimeUnit) |
擷取並移除此 deque 的最後一個元素,必要時等待指定時間以待該元素可用。 |
| Pop() |
從這組 deque 代表的堆疊中彈出一個元素。 (繼承來源 IDeque) |
| Push(Object) |
若能立即將元素推入由此佇列代表的堆疊(換言之,將該佇列的首端)推入,若目前無空格則拋出。 |
| Put(Object) |
將指定元素插入由該排隊代表的隊列中(換言之,排隊尾部),必要時等待空間空出。 |
| PutFirst(Object) |
將指定元件插入此排隊前方,必要時等待空間出現。 |
| PutLast(Object) |
在此排隊末端插入指定元素,必要時等待空間出現。 |
| RemainingCapacity() |
回傳這個佇列理想上(在沒有記憶體或資源限制的情況下)可接受且不阻塞,或 |
| Remove() |
取回並移除由此排隊代表的隊列首(換言之,該排隊的第一個元素)。 |
| Remove(Object) |
移除該元素首次出現於此排隊。 |
| RemoveAll(ICollection) |
移除該集合中所有同時包含於指定集合中的元素(可選操作)。 (繼承來源 ICollection) |
| RemoveFirst() |
移除並回傳此集合的第一個元素(可選操作)。 (繼承來源 ISequencedCollection) |
| RemoveFirstOccurrence(Object) |
移除該元素首次出現於此排隊。 |
| RemoveIf(IPredicate) |
移除該集合中所有滿足該謂詞的元素(可選操作)。 (繼承來源 ICollection) |
| RemoveLast() |
移除並回傳此集合的最後一個元素(可選操作)。 (繼承來源 ISequencedCollection) |
| RemoveLastOccurrence(Object) |
移除該元素最後出現的部分。 |
| RetainAll(ICollection) |
只保留該集合中包含於指定集合中的元素(可選操作)。 (繼承來源 ICollection) |
| Reversed() |
回傳此集合的逆序視圖。 (繼承來源 ISequencedCollection) |
| SetJniIdentityHashCode(Int32) |
將回傳的值設為 |
| SetJniManagedPeerState(JniManagedPeerStates) |
|
| SetPeerReference(JniObjectReference) |
將回傳的值設為 |
| Size() |
返回此排隊中的元素數量。 |
| Spliterator() |
在由此 |
| Take() |
擷取並移除由該排隊代表的隊列頭部(換言之,排隊列的第一個元素),必要時等待元素可用。 |
| TakeFirst() |
取回並移除這個雙點的第一個元素,必要時等待有元素可用。 |
| TakeLast() |
取回並移除這個 deque 的最後一個元素,必要時等待有元素可用。 |
| ToArray() |
回傳包含此集合中所有元素的陣列。 (繼承來源 ICollection) |
| ToArray(IIntFunction) |
回傳包含此集合中所有元素的陣列,並使用所提供的 |
| ToArray(Object[]) |
回傳包含此集合中所有元素的陣列;回傳陣列的執行時型別即為指定陣列的類型。 (繼承來源 ICollection) |
| UnregisterFromRuntime() |
取消註冊此實例,讓執行時不會在未來 Java.Interop.JniRuntime+JniValueManager.PeekValue 的呼叫中回傳該實例。 (繼承來源 IJavaPeerable) |
明確介面實作
| 名稱 | Description |
|---|---|
| IIterable.Spliterator() |
在此集合中建立 元素 |
| ISequencedCollection.Reversed() |
待補充 (繼承來源 IDeque) |
擴充方法
| 名稱 | Description |
|---|---|
| GetJniTypeName(IJavaPeerable) |
取得實例 |
| JavaAs<TResult>(IJavaPeerable) |
試著強制 |
| JavaCast<TResult>(IJavaObject) |
執行 Android 執行時檢查型別轉換。 |
| JavaCast<TResult>(IJavaObject) |
|
| OfferAsync(IBlockingQueue, Object, Int64, TimeUnit) |
|
| OfferAsync(IBlockingQueue, Object) |
|
| OfferFirstAsync(IBlockingDeque, Object, Int64, TimeUnit) |
|
| OfferFirstAsync(IBlockingDeque, Object) |
|
| OfferLastAsync(IBlockingDeque, Object, Int64, TimeUnit) |
|
| OfferLastAsync(IBlockingDeque, Object) |
|
| PollAsync(IBlockingQueue, Int64, TimeUnit) |
|
| PollFirstAsync(IBlockingDeque, Int64, TimeUnit) |
|
| PollLastAsync(IBlockingDeque, Int64, TimeUnit) |
|
| PutAsync(IBlockingQueue, Object) |
|
| PutFirstAsync(IBlockingDeque, Object) |
|
| PutLastAsync(IBlockingDeque, Object) |
|
| TakeAsync(IBlockingQueue) |
|
| TakeFirstAsync(IBlockingDeque) |
|
| TakeLastAsync(IBlockingDeque) |
|
| ToEnumerable(IIterable) |
回傳 和 IEnumerable ,會對 Java IIterable進行迭代,允許 |
| ToEnumerable<T>(IIterable) |
回傳 和 IEnumerable<T> ,該 在 Java IIterable上迭代,將每個元素 集結為 |
| TryJavaCast<TResult>(IJavaPeerable, TResult) |
試著強制 |