Поток безопасности файлов - PullRequest
2 голосов
/ 13 июля 2011

У меня есть много приложений, пишущих в мой файл одновременно в java. Я хочу сделать эту операцию параллельной, а также чтобы мой файл сохранял порядок. У меня есть Тема 1 написание с сайта 1

Тема 2, запись с сайта 2

Тема 3, запись с сайта 3

И я хочу сохранить порядок.

Как я могу это сделать Спасибо

Ответы [ 2 ]

5 голосов
/ 13 июля 2011

Используйте Очередь для представления операций с файлом и убедитесь, что вы берете из очереди в соответствующем порядке (первым пришел-первым вышел).Вы можете рассматривать это как проблему производителя-потребителя .У вас есть несколько потоков, собирающих данные, и один потребитель записывает эти данные на диск.

5 голосов
/ 13 июля 2011

Вы можете использовать обычный механизм синхронизации. Создайте файловый репозиторий, содержащий ссылки на объекты java.io.File. Это представит API как getFile (String path). Каждый раз, когда вы хотите получить доступ к файлу, сделайте следующее:

File file = FileRepository.getFile("foo.txt");
synchronized(file) {
  // perform any manipulations. 
}

Другой способ синхронизации доступа к файлам:

FileChannel.lock()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...