C#
 Computer >> コンピューター >  >> プログラミング >> C#

C#のCopyOnWriteArrayListバージョン


JavaにはCopyOnWriteArrayListがありますが、C#にはありません。そのためには、C#のSynchronizedCollectionクラスを優先する必要があります。

SyncronizedCollectionには、あるタイプのオブジェクトを含むスレッドセーフなコレクションがあります。構文は次のとおりです。

public class SynchronizedCollection<T> : IList<T>, ICollection<T>,
IEnumerable<T>, IEnumerable, IList, ICollection

上記のTはオブジェクトのタイプです。

以下は、C#のSyncronizedCollectionクラスのプロパティです-

Sr.No。 プロパティの名前と説明
1 カウント
スレッドセーフコレクション内の要素の数をカウントします。
2 アイテム[Int32]
指定されたインデックスを持つスレッドセーフコレクションから要素を取得します。
3 アイテム
スレッドセーフコレクションに含まれる要素のリストを取得します。
4 SyncRoot
スレッドセーフコレクションへのアクセスを同期するために使用されるオブジェクトを取得します。

  1. Javaでスレッドセーフなコレクションクラスはどれですか?

    スレッドセーフ classは、クラスの内部状態とメソッドからの戻り値が、複数のスレッドから同時に呼び出されているときに正しいことを保証するクラスです。 スレッドセーフのコレクションクラス Javaではスタックです 、ベクター 、プロパティ 、ハッシュテーブル 、など。 スタック スタック Javaのクラスは、 LIFOの原則に基づくスタックデータ構造を実装します。 。つまり、スタック クラスは、プッシュ、ポップ、ピーク、検索、空などの多くの操作をサポートできます 、など。 例 import java.util.*; public class StackTest {    p

  2. SwingはJavaでスレッドセーフですか?

    いいえ、 Java Swing コンポーネントはJavaではスレッドセーフではありません。 Swingコンポーネントがスレッドセーフではない理由 Java Swingがスレッドセーフではない主な理由の1つは、そのコンポーネントを拡張するタスクを簡素化することです。 Java Swingのもう1つの理由は、ロックの取得と解放、および状態の復元に伴うオーバーヘッドのため、スレッドセーフではありません。 。 一部のJavaSwingコンポーネントメソッドは、 repaint()、revalidate()などのマルチスレッドアクセスをサポートします。 、および invalidate()メソッド