存储和读取流数据

问题描述 投票:0回答:1

我有一个工作进程,它生成连续的文本日志(直到完成)。我将此日志发送到网络服务器,该服务器应存储此日志。同时,用户应该可以使用不同的 Web 服务器界面实时查看此日志。

实际上我有一个 HashMap,其中 Key 是一个 ID,值是一个 StringBuilder,每当出现新的日志行时我都会在其中追加数据。

问题是,任何进程都使用这个 HashMap,我担心什么时候会有更多的并发进程和许多想要读取日志的用户。

对于这个用例,更好的方法是什么?

java jersey-2.0
1个回答
0
投票

由于对 Web 服务器的所有请求都是在不同的线程中发出的,因此在以下情况下可能会出现问题:

  • 一个线程将写入
    StringBuilder
  • 另一个线程将阅读相同的
    StringBuilder

最简单的解决方案:使用

StringBuffer
而不是
StringBuilder
,因为它的所有方法都是同步的。

© www.soinside.com 2019 - 2024. All rights reserved.