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

时间:2010-10-19 07:47:45

标签: java multithreading file-io

以下是该方案:

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

有可能做这样的事吗?

如果没有,还有另一种方法可以做这样的事吗?

1 个答案:

答案 0 :(得分:13)

您提到的问题是着名的Producer Consumer Problem

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

真实世界使用的一个例子是AjaxYahooSearchEngineMonitor

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

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