为了账号安全,请及时绑定邮箱和手机立即绑定

多线程只写一个输出流并且数据丢失

多线程只写一个输出流并且数据丢失

幕布斯6054654 2023-08-16 15:51:38
我运行五个线程来生成随机字符串数据,然后仅写入一个输出流。程序完成后,一些数据丢失了。我简化了我的代码。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 方法offerpoll而不是+=and = ""on String 引用。



查看完整回答
反对 回复 2023-08-16
  • 1 回答
  • 0 关注
  • 124 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信