Java:哪个对象更合适?

时间:2010-08-19 15:40:24

标签: java multithreading synchronization vector arraylist

我正在编写类似于聊天服务器 - 客户端对的应用程序。

我打算建立一个中心对象,它将保存从客户端收到的新消息,直到主线程处理它们为止。

我的应用程序是多线程的。每个客户端都在自己的线程上,因此多个线程将向此中心对象添加消息。

主线程将检查此对象的消息,删除“最旧的”并适当地处理它。我希望消息的处理顺序与它们相同(FIFO)。

什么类型的对象最适合保存新邮件?我查看了Vectors和ArrayLists,但我对同步方面感到困惑。我之前从未使用同步或线程。

谢谢

4 个答案:

答案 0 :(得分:5)

答案 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