CopyOnWriteArraySet 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
Set
,針對其所有作業使用內部 CopyOnWriteArrayList
。
[Android.Runtime.Register("java/util/concurrent/CopyOnWriteArraySet", DoNotGenerateAcw=true)]
[Java.Interop.JavaTypeParameters(new System.String[] { "E" })]
public class CopyOnWriteArraySet : Java.Util.AbstractSet, IDisposable, Java.Interop.IJavaPeerable, Java.IO.ISerializable
[<Android.Runtime.Register("java/util/concurrent/CopyOnWriteArraySet", DoNotGenerateAcw=true)>]
[<Java.Interop.JavaTypeParameters(new System.String[] { "E" })>]
type CopyOnWriteArraySet = class
inherit AbstractSet
interface ISerializable
interface IJavaObject
interface IDisposable
interface IJavaPeerable
- 繼承
- 屬性
- 實作
備註
Set
,針對其所有作業使用內部 CopyOnWriteArrayList
。 因此,它共用相同的基本屬性: <ul><li>最適合設定大小通常會保持小、只讀作業大大超過變動作業數目的應用程式,而且您需要防止在周遊期間干擾線程。 <li>這是安全線程。 <li>Mutative operations (add
、 set
、 remove
等) 很昂貴,因為它們通常需要複製整個基礎陣列。 <li>Iterators 不支持變動 remove
作業。 <透過反覆運算器進行 li>Traversal 的速度很快,而且無法遇到來自其他線程的干擾。 反覆運算器依賴在建構反覆運算器時,陣列的不變更快照集。 </ul>
<b>範例使用方式。</b> 下列程式代碼草圖會使用寫入複製集來維護一組處理程式對象,這些物件會在狀態更新時執行某些動作。
{@code
class Handler { void handle() { ... } }
class X {
private final CopyOnWriteArraySet<Handler> handlers
= new CopyOnWriteArraySet<>();
public void addHandler(Handler h) { handlers.add(h); }
private long internalState;
private synchronized void changeState() { internalState = ...; }
public void update() {
changeState();
for (Handler handler : handlers)
handler.handle();
}
}}
這個類別是 Java Collections Framework 的成員。
已在1.5中新增。
的 java.util.concurrent.CopyOnWriteArraySet
Java 檔。
此頁面的部分是根據 Android 開放原始碼專案所建立和共用的工作進行修改,並根據 Creative Commons 2.5 屬性授權中所述的詞彙使用。
建構函式
CopyOnWriteArraySet() |
建立空白集合。 |
CopyOnWriteArraySet(ICollection) |
建立集合,其中包含指定集合的所有專案。 |
CopyOnWriteArraySet(IntPtr, JniHandleOwnership) |
建立 JNI 物件的 Managed 表示法時使用的建構函式;由運行時間呼叫。 |
屬性
Class |
傳回這個 |
Handle |
基礎Android實例的句柄。 (繼承來源 Object) |
IsEmpty |
要新增 (繼承來源 AbstractCollection) |
JniIdentityHashCode |
|
JniPeerMembers |
|
PeerReference |
|
ThresholdClass |
此 API 支援適用於 Android 的 Mono 基礎結構,並不適合直接從您的程式代碼使用。 |
ThresholdType |
此 API 支援適用於 Android 的 Mono 基礎結構,並不適合直接從您的程式代碼使用。 |
方法
Add(Object) |
要新增 (繼承來源 AbstractCollection) |
AddAll(ICollection) |
要新增 (繼承來源 AbstractCollection) |
Clear() |
要新增 (繼承來源 AbstractCollection) |
Clone() |
建立並傳回這個 對象的複本。 (繼承來源 Object) |
Contains(Object) |
要新增 (繼承來源 AbstractCollection) |
ContainsAll(ICollection) |
要新增 (繼承來源 AbstractCollection) |
Dispose() |
|
Dispose(Boolean) |
|
Equals(Object) |
指出其他物件是否「等於」這個物件。 (繼承來源 Object) |
ForEach(IConsumer) |
|
GetHashCode() |
傳回此物件的雜湊碼值。 (繼承來源 Object) |
Iterator() |
根據新增這些項目的順序,傳回這個集合中包含的專案反覆運算器。 |
JavaFinalize() |
當垃圾收集決定不再參考物件時,垃圾收集行程在 物件上呼叫。 (繼承來源 Object) |
Notify() |
喚醒正在等候此物件監視器的單一線程。 (繼承來源 Object) |
NotifyAll() |
喚醒正在等候此物件監視器的所有線程。 (繼承來源 Object) |
Remove(Object) |
要新增 (繼承來源 AbstractCollection) |
RemoveAll(ICollection) |
要新增 (繼承來源 AbstractCollection) |
RemoveIf(IPredicate) |
|
RetainAll(ICollection) |
要新增 (繼承來源 AbstractCollection) |
SetHandle(IntPtr, JniHandleOwnership) |
設定 Handle 屬性。 (繼承來源 Object) |
Size() |
傳回這個集合中的項目數目。 |
Spliterator() |
|
ToArray() |
要新增 (繼承來源 AbstractCollection) |
ToArray(Object[]) |
要新增 (繼承來源 AbstractCollection) |
ToArray<T>() |
|
ToString() |
傳回物件的字串表示。 (繼承來源 Object) |
UnregisterFromRuntime() |
|
Wait() |
讓目前線程等候直到喚醒為止,通常是藉由em <notified/em>或<em>interrupted</em> 來喚醒它。<> (繼承來源 Object) |
Wait(Int64, Int32) |
讓目前的線程等到喚醒為止,通常是因為 <em>notified</em> 或 <em>interrupted</em>,或直到經過一定數量的實時為止。 (繼承來源 Object) |
Wait(Int64) |
讓目前的線程等到喚醒為止,通常是因為 <em>notified</em> 或 <em>interrupted</em>,或直到經過一定數量的實時為止。 (繼承來源 Object) |
明確介面實作
IJavaPeerable.Disposed() |
|
IJavaPeerable.DisposeUnlessReferenced() |
|
IJavaPeerable.Finalized() |
|
IJavaPeerable.JniManagedPeerState |
|
IJavaPeerable.SetJniIdentityHashCode(Int32) |
|
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
|
IJavaPeerable.SetPeerReference(JniObjectReference) |
|
擴充方法
JavaCast<TResult>(IJavaObject) |
執行 Android 執行時間檢查的類型轉換。 |
JavaCast<TResult>(IJavaObject) |
|
GetJniTypeName(IJavaPeerable) |
|
ToEnumerable(IIterable) |
|
ToEnumerable<T>(IIterable) |
|