Вам нужно будет разработать собственный протокол блокировки для реализации в приложениях. Особенности зависят от базовой операционной системы, но в целом ничто не остановит один процесс от чтения файла, даже если другой процесс записывает в него файл.
Java имеет класс FileLock
, который можно использовать для координации доступа к файлу. Однако вам необходимо внимательно прочитать предупреждения, особенно те, которые касаются системной зависимости этой функции. Тестирование функции в целевой операционной системе чрезвычайно важно.
Ключевой концепцией Java FileLock
является то, что она является только «консультативной». Ваш процесс должен быть в состоянии обнаружить, что другой процесс блокирует файл, но ваш процесс может игнорировать его и делать с файлом все, что ему нравится, без ограничений.
Вопрос неоднозначен, будет ли файл использоваться несколькими процессами или просто разделять потоки внутри одного процесса Java. Это большая разница. Если проблема требует только безопасности потоков в рамках одного процесса, ReentrantReadWriteLock
может обеспечить надежное, высокопроизводительное решение без каких-либо ошибок, специфичных для платформы.