Вы можете использовать обычный механизм синхронизации. Создайте файловый репозиторий, содержащий ссылки на объекты java.io.File. Это представит API как getFile (String path). Каждый раз, когда вы хотите получить доступ к файлу, сделайте следующее:
File file = FileRepository.getFile("foo.txt");
synchronized(file) {
// perform any manipulations.
}
Другой способ синхронизации доступа к файлам:
FileChannel.lock()