クライアントサーバーアプリケーションを構築しています。サーバーはオブジェクトのリストを保持します。
LinkedList<MyObject> objects;
オブジェクトが追加または削除されるたびに、クライアントはこれを知っている必要があります。彼らはすでにマルチキャストグループに参加しています。彼らに変更を通知し続けるための最良の方法は何ですか?
LinkedListを拡張するクラスを作成し、Serializableで実装する必要がありますか?
クライアントサーバーアプリケーションを構築しています。サーバーはオブジェクトのリストを保持します。
LinkedList<MyObject> objects;
オブジェクトが追加または削除されるたびに、クライアントはこれを知っている必要があります。彼らはすでにマルチキャストグループに参加しています。彼らに変更を通知し続けるための最良の方法は何ですか?
LinkedListを拡張するクラスを作成し、Serializableで実装する必要がありますか?
変更されるたびに更新されたリストをマルチキャストするのは確かに簡単ですが、問題が発生する可能性があります。
リストが大きくなったり、更新が頻繁に行われる場合は、スケーラビリティが問題になる可能性があります。毎回リスト全体を送信するのではなく、リストへの変更を「デルタ」として送信することを検討してください。
を使用したシリアル化はコストがかかる可能性がありますが、カスタム メソッドとメソッドObjectOutputStream
を作成することでパフォーマンスを向上させることができます。(リストのシリアル化は既に最適化されています...)readObject
writeObject
これを行うためにサブクラス化LinkedList
する必要はありません。それはもうSerializable
です。
競合状態や騒乱を避けるためにリスト構造を同期する必要がある可能性が最も高いですが、それは潜在的なボトルネックを作成します。をまたはList
の同時実装に置き換えることを検討してください。Queue
Deque