クラスで静的 ArrayList を使用して、更新不可能なデータベース フィールドに関する情報を格納しています。コンストラクターで一度初期化する予定です(コンストラクターのロックによって保護されたinitメソッド呼び出し)。その後、複数のスレッドが arraylist にフィールドが含まれているかどうかを確認します。この読み取りアクセスを何らかの方法で制御する必要はありますか? たとえば、ArrayList.Synchronized を呼び出します。
1992 次
5 に答える
3
いいえ、あなたが読んでいる限り、あなたはそれを持っていることができます.
于 2009-11-30T13:58:09.400 に答える
3
いいえ。同期は、状態を変更しようとしているステートフル オブジェクトに対してのみ必要です。
于 2009-11-30T13:58:26.557 に答える
3
いいえ(また、暗黙のマルチスレッドロックを持つstatic
コンストラクターで行う限り、作成する必要はありません-それを行う立場にない場合は、おそらくロックする必要があります)。ただし、R/W アクセスが必要になった場合にアクセスを制御するために使用できる場合は、ReaderWriterLockSlim があります。
于 2009-11-30T13:59:01.287 に答える
1
ReadOnlyCollection
いいえ、しかし、どのスレッドもそれを変更できないようにするために、それを でラップすることを検討してください。
編集:ただし、これを行うには、リストをList<T>
ではなくにする必要がありますArrayList
。
于 2009-11-30T14:38:36.933 に答える
0
リストの最初の作成では、静的コンストラクターの使用を検討できます。これは、型への最初の参照で一度だけ呼び出されます。
于 2009-11-30T14:45:03.357 に答える