Можно ли одновременно читать и записывать в файл?
сценарий:
- ThreadA собирается читать из некоторого сокета и записывать данные в "MyFile.txt"
- ThreadB будет читать "MyFile", и когда он достигнет конца, он будет циклически, пока новые данные не будут доступны в MyFile (потому что я не хочу повторно открывать " MyFile.txt", и теряю время, чтобы добраться до места, где я был..).
возможно ли это сделать ?
Если нет, есть ли другой способ сделать такой вещь ?
2 ответов
проблема, которую вы упомянули, является известной Проблема Потребителя Производителя
общим решением для этого является использование BlockingQueue
пример использования в реальном мире AjaxYahooSearchEngineMonitor
Что делает поток A, он отправит строку в очередь, а затем немедленно вернется.
Что делает поток B, он будет забирать элемент из очереди один за другим и обрабатывать их. Когда нет элемент в очереди, поток B будет просто ждать там. См. строку 83 исходного кода.