java - 是否可以同时读取和写入文件?

标签 java multithreading file-io

场景如下:

  • ThreadA 将从某个套接字读取数据,并将数据写入“MyFile.txt”
  • ThreadB 将读取“MyFile”,当它到达末尾时,它将循环直到 MyFile 中有新数据可用(因为我不想重新打开“MyFile.txt”,并浪费时间所以我从原来的位置到达了..)。

有可能做这样的事情吗?

如果没有,还有其他方法可以做这样的事情吗?

最佳答案

你提到的问题是一个著名的Producer Consumer Problem

对此的常见解决方案是使用 BlockingQueue

真实世界用法的示例在 AjaxYahooSearchEngineMonitor

Thread A 做的是,它会提交一个字符串到队列,然后立即返回。

Thread B 做的是,它会从队列中一个接一个地取出项目,并处理它们。 当队列中没有项目时,线程 B 将在那里等待。见源码第83行。

关于java - 是否可以同时读取和写入文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3966229/

相关文章:

java - flatMap 保证是惰性的吗?

java - 基于 no 的线程配置。 CPU 核心数

java - 我可以访问 Java 中同步块(synchronized block)使用的锁吗?

Java Applet 文件输入

c - 读取程序的输出,将其保存为字符串,然后在原始程序中使用该字符串

java - 在 SQLite 中查询日期的月份部分

java - Gson - 从 Json 解析为类型化的 ArrayList<T>

java - hibernate - 如何在 mysql 和 oracle 数据库中设置自动增量?

java - 如何使用 NetBeans 消除 Java 代码中的死锁

java - windowClosing() 并抛出异常