Как реализовать параллельное чтение файла, сопоставленного с памятью, в Java?

У меня есть много потоков, которые одновременно читают один и тот же файл (всего около 100M), и только один поток обновляет файл. Я хочу отобразить файл в памяти, чтобы уменьшить файловый ввод-вывод. Как это можно сделать на Java?

В основном я рассмотрел следующие 2 метода:

  1. с массивом байтов для хранения файла и каждый раз создавать ByteArrayInputStream для чтения буфера при многопоточном чтении.
  2. с NIO, чтобы получить один файловый канал, синхронизировал канал для чтения из MappedByteBuffer для многопоточного чтения.

Я не уверен, что методы должны работать. Пожалуйста, помогите дать подсказку, если есть лучшее решение.

7
задан Simon Wang 18 May 2012 в 06:22
поделиться