我正在构建一个客户端-服务器应用程序。服务器保留一个对象列表:
LinkedList<MyObject> objects;
每次添加或删除对象时,客户端都应该知道这一点。他们已经加入了多播组。让他们收到更改通知的最佳方式是什么?
我应该创建一个扩展 LinkedList 的类并用 Serializable 实现它吗?
我正在构建一个客户端-服务器应用程序。服务器保留一个对象列表:
LinkedList<MyObject> objects;
每次添加或删除对象时,客户端都应该知道这一点。他们已经加入了多播组。让他们收到更改通知的最佳方式是什么?
我应该创建一个扩展 LinkedList 的类并用 Serializable 实现它吗?
每次更改时多播更新的列表当然很简单,但可能存在问题。
如果列表变大或更新频繁,则可伸缩性可能是一个问题。考虑将更改作为“增量”发送到列表,而不是每次都发送整个列表。
使用序列化ObjectOutputStream
可能会很昂贵,尽管您可以通过编写自定义readObject
和writeObject
方法来提高性能。(列表的序列化已经优化......)
你不需要子类LinkedList
来做到这一点。已经是了Serializable
。
您很可能需要同步列表结构以避免竞争条件和混乱,但这会产生潜在的瓶颈。考虑用orList
的并发实现替换。Queue
Deque