我正在用Java创建一个多线程的Client -Server聊天应用程序。我想将所有消息存储到数据结构中并将其写入文件(意味着我想创建消息日志)。 StringBuffer会不错?或者还有其他更好的选择吗?
答案 0 :(得分:1)
在应用程序运行之前,您不希望选择锁定日志文件。
好的选择是使用一些In-Memory对象它可以是任何东西,但需要在对synchronized
块进行任何操作之前对其进行线程安全。
在达到其最大内存的一段时间之后,然后刷新日志文件中的所有数据,而必须在后台维护其他消息时在单独的内存中对象中。
最后交换对象并使其为空。
还可以创建一个单独的线程来写入日志文件以获得良好的性能。
使synchronized
块尽可能短,因为它会阻止其他线程进入,除非它被释放。
希望你明白。
答案 1 :(得分:0)
取决于您对这些消息的进一步计划。他们只是日志吗?您可以简单地使用一些日志框架。但是,如果您稍后将它们读回内存,则可以考虑使用纯文本,json或xml格式的序列化库(如果性能很重要,甚至可以考虑二进制)。