我正在编写类似于聊天服务器 - 客户端对的应用程序。
我打算建立一个中心对象,它将保存从客户端收到的新消息,直到主线程处理它们为止。
我的应用程序是多线程的。每个客户端都在自己的线程上,因此多个线程将向此中心对象添加消息。
主线程将检查此对象的消息,删除“最旧的”并适当地处理它。我希望消息的处理顺序与它们相同(FIFO)。
什么类型的对象最适合保存新邮件?我查看了Vectors和ArrayLists,但我对同步方面感到困惑。我之前从未使用同步或线程。
谢谢
答案 0 :(得分:5)
ConcurrentLinkedQueue
听起来很可能。
答案 1 :(得分:3)
如果这不仅仅是一个小玩具项目,你应该研究JMS,它解决了你还没有意识到的所有小问题。
JMS的一个很好的实现是Apache ActiveMQ(与IBM的MQSeries无关)。
答案 2 :(得分:1)
您可能还会考虑jgroups此项目。
JGroups是一个开源可靠的组通信工具包。它可靠且易于使用。这是教程中的基本chat example。
答案 3 :(得分:1)
虽然不是一个直接的答案(因为@Alison提供了足够好的一个,只要你不需要持久化消息),每当你需要数据结构类或实用程序类时,总是看看java.util.concurrent包。帮助多线程编码:http://download-llnw.oracle.com/javase/6/docs/api/java/util/concurrent/package-summary.html