tl; dr: Нет. Вы не можете делать предположения о поведении операционной системы хоста в отношении ваших блокировок.
Хорошие новости: Пытаетесь ли вы убедиться, что в вашем приложении есть механизм блокировки потока? Если это так, FileLock
достаточно (при условии, что остальная часть приложения, конечно, состоит из правильно написанного поточно-ориентированного кода).
Плохие новости: К сожалению, если вы пытаетесь гарантировать, что Windows выполнит вашу блокировку для всех приложений, вы не можете рассчитывать на это.
Это легко заметить в Windows: вы часто можете перезаписывать файлы, в которые пишутся (когда файлы журнала становятся слишком длинными, у меня, например, emacs пресекает весь предыдущий спам). Тем не менее, Windows обычно не позволяет удалять открытый файл.
Из документации FileLock :
Блокировки файлов проводятся от имени
вся виртуальная машина Java. Они есть
не подходит для контроля доступа к
файл несколькими потоками внутри
та же виртуальная машина.
Объекты блокировки файлов безопасны для использования
несколько одновременных потоков.
... и позже ...
Является ли замок на самом деле
предотвращает другую программу от
доступ к содержимому заблокированного
регион является системно-зависимым и
поэтому не указано. Родной
средства блокировки файлов некоторых
системы являются просто консультативными, то есть
что программы должны сотрудничать
соблюдать известный протокол блокировки в
Чтобы гарантировать целостность данных. На
в других системах собственные блокировки файлов
обязательно, что означает, что если одна программа
блокирует область файла, затем другие
программы фактически не могут
доступ к этому региону таким образом, что
нарушит замок. На еще одном
системы, являются ли собственные блокировки файлов
консультативный или обязательный настраивается
на основе файлов. Для обеспечения
последовательное и правильное поведение по всему
платформы, настоятельно рекомендуется
что блокировки, предоставляемые этим API, будут
используется так, как если бы они были консультативными замками.