这里的情景:是否可以同时读写文件?
- 的ThreadA会从一些套接字读取和写入数据到“MyFile.txt的”
- ThreadB是要读“MyFile的”,当它到达结束时,会循环直到MyFile中有新的数据可用(因为我不想重新打开“MyFile.txt”,并且失去了时间,所以我到达了我所在的位置..)。
是否有可能做这样的事情?
如果没有,是否有另一种方法来做这样的事情?
这里的情景:是否可以同时读写文件?
是否有可能做这样的事情?
如果没有,是否有另一种方法来做这样的事情?
你提到的问题是这个著名的Producer Consumer Problem
常用的解决方法是使用BlockingQueue
现实世界中使用的一个例子是AjaxYahooSearchEngineMonitor
不会有什么线程A,它会提交要排队的字符串,然后立即返回。
线程B做了什么,它会逐个从队列中拾取项目,并处理它们。 当队列中没有项目时,线程B将在那里等待。请参阅源代码的第83行。
非常感谢!这正是我想要的。它比从DataBase或文件读取/写入要好。 – mohamida 2010-10-19 09:16:44
我认为这是可能使用Java NIO库
的我不认为这是苏雷什,但如果你展示如何去做,我很乐意予以纠正。 – 2010-10-19 07:59:41
@Nick使用每个线程的选择器并对其进行同步是可能的。 – 2010-10-19 08:09:54
可能重复[如何使用Java从正在被写入一个文件中读取?](http://stackoverflow.com/questions/4149/如何使用java-to-read-from-a-file-that-being-being-being-being-being) – 2010-10-19 07:57:31
我已经添加了一个问题链接,该问题与此问题重复。但顺带一提,你有没有看过RandomAccessFile?你不需要再从整个文件中读取一个特定的位置 – 2010-10-19 07:58:45