REST呼び出しを介して追加/削除/更新できるオブジェクトのArrayListがあります。同時アクセスから発生する可能性のある問題を防ぐために、ReadWriteLockは適切で効率的ですか?
[〜#〜] acid [〜#〜] が保証されているデータベースは、いくつかの理由から、ArrayListをメモリに保持しようとするよりも、ほぼ確実にこれを行うためのより良い方法です。
あまり変化しないデータで非常に高速なターンアラウンドが必要な場合は、Redisのようなキャッシュを追加するか、データベースから入力された メモ化されたオブジェクト を使用することを検討してください。
それは実際には非常に単純で、 Synchronized バージョンは問題なく動作し、繰り返し処理する必要がある場合を除いて、リストへのすべてのアクセスを安全にします。それを繰り返す必要がある場合は、いくつかの方法があります。
同期された操作のパフォーマンスについては、心配する必要はありません。同期されていないリストよりも数倍遅くなりますが、ディスクにアクセスするよりも数桁速くなります。
これで、リストから取得したオブジェクトを2つのスレッドから同時に更新できる場合は、独自の内部同期メカニズムが必要です(多くの場合、ビジネスロジックを使用してこの可能性を排除できます)。
これを使用して、速度に問題があるかどうかを確認します。同期を回避するためのパターンがありますが、もう少し考えてコーディングする必要があります。 (最も安全なのは、おそらくFunctionalコレクションのリストオブジェクトを使用することです)
Robertが提案するようにデータベースにアクセスする方が良いです。最初にそれを実行し、遅すぎる場合にのみ情報を内部にキャッシュします。