基本上我需要一个数据结构来存储服务器端的临时聊天消息。它应该是:
bounded:因为我不需要存储太多消息,所以客户端每秒都会发送请求以获取新消息。我认为绑定大小应该是最大值。在一秒钟内安装并发请求。当缓冲区已满时,旧消息将被删除。
适合高并发访问:我不想用Collections.synchronizedXXXX这样的数据结构,因为在迭代过程中,如果其他线程改变了数据结构,比如增加了一条消息,就会抛出异常,所以我要加锁整个数据结构,实际上我并不关心客户端请求是否可以获得最后插入的消息,因为他们会在一秒钟后发送一个新请求,另一方面写操作应该永远不会延迟。包 java.util.concurrency 下的类似乎是解决方案,但是......
non-blocking: LinkedBlockingQueue, ArrayBlockingQueue 它们可以有界并且在迭代过程中不会抛出异常,但它们都是阻塞队列。当队列已满时,我想将新元素添加到尾部并从头部删除旧元素,而不是在那里阻塞并等待有人删除头部。
所以我的问题是第三个库有什么好的实现吗?例如谷歌番石榴?或者,也许您对在服务器上存储临时聊天消息有更好的想法?
非常感谢!