Java - 多线程聊天服务 - 存储消息

时间:2014-03-14 21:46:00

标签: java multithreading chat

我正在用Java创建一个多线程的Client -Server聊天应用程序。我想将所有消息存储到数据结构中并将其写入文件(意味着我想创建消息日志)。 StringBuffer会不错?或者还有其他更好的选择吗?

2 个答案:

答案 0 :(得分:1)

在应用程序运行之前,您不希望选择锁定日志文件。

好的选择是使用一些In-Memory对象它可以是任何东西,但需要在对synchronized块进行任何操作之前对其进行线程安全。

在达到其最大内存的一段时间之后,然后刷新日志文件中的所有数据,而必须在后台维护其他消息时在单独的内存中对象中。

最后交换对象并使其为空。

还可以创建一个单独的线程来写入日志文件以获得良好的性能。

使synchronized块尽可能短,因为它会阻止其他线程进入,除非它被释放。

希望你明白。

答案 1 :(得分:0)

取决于您对这些消息的进一步计划。他们只是日志吗?您可以简单地使用一些日志框架。但是,如果您稍后将它们读回内存,则可以考虑使用纯文本,json或xml格式的序列化库(如果性能很重要,甚至可以考虑二进制)。

相关问题