场景如下:
- 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/