語言

IBlockingDeque 介面

定義

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

若此處Collection不包含任何元素,則回傳true。

(繼承來源 ICollection)
JniIdentityHashCode

回傳包裹實例的 java.lang.System.identityHashCode() 值。

(繼承來源 IJavaPeerable)
JniManagedPeerState

管理貴族的狀況。

(繼承來源 IJavaPeerable)
JniObjectReferenceControlBlock

Deque A還支援阻塞操作,即在取回元素時等待排隊列非空,並在儲存元素時等待排隊列中空位。

(繼承來源 IJavaPeerable)
JniPeerMembers

成員存取與召喚支援。

(繼承來源 IJavaPeerable)
Last

取回但不移除這個雙排的最後一個元素。

(繼承來源 IDeque)
PeerReference

回傳JniObjectReference包裹後的 Java 物件實例。

(繼承來源 IJavaPeerable)

方法

名稱 Description
Add(Object)

若可立即插入且不違反容量限制,則將指定元素插入由該排隊代表的佇列(換言之,排隊尾部),成功後返回true,若目前無空間則拋出 。IllegalStateException

AddAll(ICollection)

將指定集合中的所有元素加入此集合(可選操作)。

(繼承來源 ICollection)
AddFirst(Object)

若能立即插入且不違反容量限制,則將指定元素置於此排隊前端,若目前無空間則投擲 。IllegalStateException

AddLast(Object)

若可立即插入且不違反容量限制,則在排隊尾插入指定元素,若目前無空間則拋棄 。IllegalStateException

Clear()

移除此集合中的所有元素(可選操作)。

(繼承來源 ICollection)
Contains(Object)

若此排隊包含指定元素,則回傳 true 。

ContainsAll(ICollection)

若此集合包含指定集合中的所有元素,則回傳 true 。

(繼承來源 ICollection)
DescendingIterator()

以反向順序回傳此雙線中元素的迭代器。

(繼承來源 IDeque)
Disposed()

當實例被處理後才被召喚。

(繼承來源 IJavaPeerable)
DisposeUnlessReferenced()

如果沒有未解決的參考資料,則 Dispose()呼叫;否則,則不做任何事。

(繼承來源 IJavaPeerable)
DrainTo(ICollection, Int32)

最多從該佇列中移除指定數量的可用元素,並將其加入給定的集合中。

(繼承來源 IBlockingQueue)
DrainTo(ICollection)

從此佇列中移除所有可用元素,並將其加入給定的集合中。

(繼承來源 IBlockingQueue)
Element()

回收但不移除由此排隊代表的隊列首(換言之,該排隊的第一個元素)。

Equals(Object)

比較指定物件與此集合以求相等。

(繼承來源 ICollection)
Finalized()

當實例完成後才會被通知。

(繼承來源 IJavaPeerable)
ForEach(IConsumer)

對每個元素 Iterable 執行指定動作,直到所有元素都處理完畢或動作拋出異常。

(繼承來源 IIterable)
GetFirst()

取得這個集合的第一個元素。

(繼承來源 ISequencedCollection)
GetHashCode()

回傳此集合的雜湊碼值。

(繼承來源 ICollection)
GetLast()

拿到這個合集的最後一個元素。

(繼承來源 ISequencedCollection)
Iterator()

回傳對該雙線中元素的迭代器,按正確順序。

Offer(Object, Int64, TimeUnit)

將指定元素插入由該排隊代表的隊列中(換言之,排隊尾部),若有需要,等待指定等待時間以待空間可用。

Offer(Object)

若能立即插入且不違反容量限制、成功後返回 true 且 false 目前無空間,則將指定元素插入由此佇列代表的佇列(也就是該排隊尾)。

OfferFirst(Object, Int64, TimeUnit)

在此排隊前插入指定元素,必要時等待指定時間以待空間。

OfferFirst(Object)

若可立即插入且不違反容量限制,則將指定元素置入該排隊前方,成功後true返回false且目前無空間。

OfferLast(Object, Int64, TimeUnit)

在此排隊結束時插入指定元素,必要時等待指定時間以待空間。

OfferLast(Object)

若可立即插入且不違反容量限制,則在完成後返回truefalse且目前無空間,則將該元素插入該排隊結束。

Peek()

取回但不移除由此排隊代表的隊列首(換言之,該排隊的第一個元素),若排隊為空,則返回 null 。

PeekFirst()

回收但不移除該排隊的第一個元素,若排隊為空則返回 null 。

(繼承來源 IDeque)
PeekLast()

取回但不移除這個雙排的最後一個元素,若此排隊為空則返回 null 。

(繼承來源 IDeque)
Poll()

擷取並移除由該排隊代表的隊列首(換言之,該排隊的第一個元素),若排隊為空,則返回 null 。

Poll(Int64, TimeUnit)

擷取並移除由此排隊代表的佇列頭部(換言之,該排隊的第一個元素),必要時等待至指定等待時間,以待該元素可用。

PollFirst()

取回並移除這個雙點的第一個元素,或如果這個雙點為空,則返回 null 。

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

擷取並移除該 deque 的第一個元素,必要時等待指定時間以待該元素可用。

PollLast()

取回並移除該雙線的最後一個元素,或若此雙線為空則返回 null 。

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

擷取並移除此 deque 的最後一個元素,必要時等待指定時間以待該元素可用。

Pop()

從這組 deque 代表的堆疊中彈出一個元素。

(繼承來源 IDeque)
Push(Object)

若能立即將元素推入由此佇列代表的堆疊(換言之,將該佇列的首端)推入,若目前無空格則拋出。IllegalStateException

Put(Object)

將指定元素插入由該排隊代表的隊列中(換言之,排隊尾部),必要時等待空間空出。

PutFirst(Object)

將指定元件插入此排隊前方,必要時等待空間出現。

PutLast(Object)

在此排隊末端插入指定元素,必要時等待空間出現。

RemainingCapacity()

回傳這個佇列理想上(在沒有記憶體或資源限制的情況下)可接受且不阻塞,或 Integer.MAX_VALUE 在沒有內在限制的情況下接受的額外元素數量。

(繼承來源 IBlockingQueue)
Remove()

取回並移除由此排隊代表的隊列首(換言之,該排隊的第一個元素)。

Remove(Object)

移除該元素首次出現於此排隊。

RemoveAll(ICollection)

移除該集合中所有同時包含於指定集合中的元素(可選操作)。

(繼承來源 ICollection)
RemoveFirst()

移除並回傳此集合的第一個元素(可選操作)。

(繼承來源 ISequencedCollection)
RemoveFirstOccurrence(Object)

移除該元素首次出現於此排隊。

RemoveIf(IPredicate)

移除該集合中所有滿足該謂詞的元素(可選操作)。

(繼承來源 ICollection)
RemoveLast()

移除並回傳此集合的最後一個元素(可選操作)。

(繼承來源 ISequencedCollection)
RemoveLastOccurrence(Object)

移除該元素最後出現的部分。

RetainAll(ICollection)

只保留該集合中包含於指定集合中的元素(可選操作)。

(繼承來源 ICollection)
Reversed()

回傳此集合的逆序視圖。

(繼承來源 ISequencedCollection)
SetJniIdentityHashCode(Int32)

將回傳的值設為 JniIdentityHashCode。

(繼承來源 IJavaPeerable)
SetJniManagedPeerState(JniManagedPeerStates)

Deque A還支援阻塞操作,即在取回元素時等待排隊列非空,並在儲存元素時等待排隊列中空位。

(繼承來源 IJavaPeerable)
SetPeerReference(JniObjectReference)

將回傳的值設為 PeerReference。

(繼承來源 IJavaPeerable)
Size()

返回此排隊中的元素數量。

Spliterator()

在由此Spliterator描述的元素上建立 a Iterable 。

(繼承來源 IIterable)
Take()

擷取並移除由該排隊代表的隊列頭部(換言之,排隊列的第一個元素),必要時等待元素可用。

TakeFirst()

取回並移除這個雙點的第一個元素,必要時等待有元素可用。

TakeLast()

取回並移除這個 deque 的最後一個元素,必要時等待有元素可用。

ToArray()

回傳包含此集合中所有元素的陣列。

(繼承來源 ICollection)
ToArray(IIntFunction)

回傳包含此集合中所有元素的陣列,並使用所提供的 generator 函式來分配回傳的陣列。

(繼承來源 ICollection)
ToArray(Object[])

回傳包含此集合中所有元素的陣列;回傳陣列的執行時型別即為指定陣列的類型。

(繼承來源 ICollection)
UnregisterFromRuntime()

取消註冊此實例,讓執行時不會在未來 Java.Interop.JniRuntime+JniValueManager.PeekValue 的呼叫中回傳該實例。

(繼承來源 IJavaPeerable)

明確介面實作

名稱 Description
IIterable.Spliterator()

在此集合中建立 元素 Spliterator 。

(繼承來源 ICollection)
ISequencedCollection.Reversed()

待補充

(繼承來源 IDeque)

擴充方法

名稱 Description
GetJniTypeName(IJavaPeerable)

取得實例 self類型的 JNI 名稱。

JavaAs<TResult>(IJavaPeerable)

試著強制self輸入 TResult,檢查 強制在 Java 端是否有效。

JavaCast<TResult>(IJavaObject)

執行 Android 執行時檢查型別轉換。

JavaCast<TResult>(IJavaObject)

Deque A還支援阻塞操作,即在取回元素時等待排隊列非空,並在儲存元素時等待排隊列中空位。

OfferAsync(IBlockingQueue, Object, Int64, TimeUnit)

Deque A還支援阻塞操作,即在取回元素時等待排隊列非空,並在儲存元素時等待排隊列中空位。

OfferAsync(IBlockingQueue, Object)

Deque A還支援阻塞操作,即在取回元素時等待排隊列非空,並在儲存元素時等待排隊列中空位。

OfferFirstAsync(IBlockingDeque, Object, Int64, TimeUnit)

Deque A還支援阻塞操作,即在取回元素時等待排隊列非空,並在儲存元素時等待排隊列中空位。

OfferFirstAsync(IBlockingDeque, Object)

Deque A還支援阻塞操作,即在取回元素時等待排隊列非空,並在儲存元素時等待排隊列中空位。

OfferLastAsync(IBlockingDeque, Object, Int64, TimeUnit)

Deque A還支援阻塞操作,即在取回元素時等待排隊列非空,並在儲存元素時等待排隊列中空位。

OfferLastAsync(IBlockingDeque, Object)

Deque A還支援阻塞操作,即在取回元素時等待排隊列非空,並在儲存元素時等待排隊列中空位。

PollAsync(IBlockingQueue, Int64, TimeUnit)

Deque A還支援阻塞操作,即在取回元素時等待排隊列非空,並在儲存元素時等待排隊列中空位。

PollFirstAsync(IBlockingDeque, Int64, TimeUnit)

Deque A還支援阻塞操作,即在取回元素時等待排隊列非空,並在儲存元素時等待排隊列中空位。

PollLastAsync(IBlockingDeque, Int64, TimeUnit)

Deque A還支援阻塞操作,即在取回元素時等待排隊列非空,並在儲存元素時等待排隊列中空位。

PutAsync(IBlockingQueue, Object)

Deque A還支援阻塞操作,即在取回元素時等待排隊列非空,並在儲存元素時等待排隊列中空位。

PutFirstAsync(IBlockingDeque, Object)

Deque A還支援阻塞操作,即在取回元素時等待排隊列非空,並在儲存元素時等待排隊列中空位。

PutLastAsync(IBlockingDeque, Object)

Deque A還支援阻塞操作,即在取回元素時等待排隊列非空,並在儲存元素時等待排隊列中空位。

TakeAsync(IBlockingQueue)

Deque A還支援阻塞操作,即在取回元素時等待排隊列非空,並在儲存元素時等待排隊列中空位。

TakeFirstAsync(IBlockingDeque)

Deque A還支援阻塞操作,即在取回元素時等待排隊列非空,並在儲存元素時等待排隊列中空位。

TakeLastAsync(IBlockingDeque)

Deque A還支援阻塞操作,即在取回元素時等待排隊列非空,並在儲存元素時等待排隊列中空位。

ToEnumerable(IIterable)

回傳 和 IEnumerable ,會對 Java IIterable進行迭代,允許 foreach 和 LINQ 與 Java 集合類型一起使用。 每個元素都會從其 Java 實例編組到對應的受管理型別。

ToEnumerable<T>(IIterable)

回傳 和 IEnumerable<T> ,該 在 Java IIterable上迭代,將每個元素 集結為 T。 這使得 foreach LINQ 可以搭配 Java 集合類型一起使用。

TryJavaCast<TResult>(IJavaPeerable, TResult)

試著強制self輸入 TResult,檢查 強制在 Java 端是否有效。

適用於