我运行五个线程来生成随机字符串数据,然后仅写入一个输出流。程序完成后,一些数据丢失了。我简化了我的代码。new Thread(() -> { stream.write(RANDOM_STRING + "\n)).start();class Stream { String buffer = ""; Stream() { new Thread(() -> { BufferedOutputStream bs = new BufferedOutputStream(new FileOutputStream("PATH"); bs.wrtie(buffer.getBytes()); // point 1 buffer = "" // point 2 bs.close(); }).start(); } public void write(String input) { buffer += input; }}我认为数据丢失的原因在第1点和第2点之间。我想如果我使用索引数据结构来检查消耗了哪些数据,就可以解决。但有没有更好的方法来解决这个问题呢?请帮我。谢谢。
1 回答
桃花长相依
TA贡献1860条经验 获得超8个赞
尝试使用ConcurrentLinkedQueue<String>
for buffer
、 with 方法offer
和poll
而不是+=
and = ""
on String 引用。
添加回答
举报
0/150
提交
取消