Можно ли одновременно читать и записывать в файл?

сценарий:

  • ThreadA собирается читать из некоторого сокета и записывать данные в "MyFile.txt"
  • ThreadB будет читать "MyFile", и когда он достигнет конца, он будет циклически, пока новые данные не будут доступны в MyFile (потому что я не хочу повторно открывать " MyFile.txt", и теряю время, чтобы добраться до места, где я был..).

возможно ли это сделать ?

Если нет, есть ли другой способ сделать такой вещь ?

2 ответов


проблема, которую вы упомянули, является известной Проблема Потребителя Производителя

общим решением для этого является использование BlockingQueue

пример использования в реальном мире AjaxYahooSearchEngineMonitor

Что делает поток A, он отправит строку в очередь, а затем немедленно вернется.

Что делает поток B, он будет забирать элемент из очереди один за другим и обрабатывать их. Когда нет элемент в очереди, поток B будет просто ждать там. См. строку 83 исходного кода.


Я думаю, что это возможно с помощью библиотек java NIO