Я прочитал этот пост. Может кто-нибудь сказать мне, если java.nio.FileLock.lock()
хорошо работает с java.util.Properties
классом.
Вопрос:
Если я установлю блокировку файла свойств, который я читаю, блокирует ли это файл для другой одновременной блокировки? Код заблокирует что-то вроде:
try {
Properties prop = new Properties();
FileInputStream fis = new FileInputStream(new File("/my/path"));
FileLock lock = fis.getChannel().lock();
prop.load(fis);
} catch (FileNotFoundException e) {
//catch it...
} catch (IOException e) {
//catch it...
}
//....
lock.release();
//...
Спасибо!
С JavaDocs :
1. Блокировки определенного файла одной виртуальной машиной Java не перекрываются.
и
2.a. Блокировки файлов хранятся от имени всей виртуальной машины Java. Они не подходят для управления доступом к файлу несколькими потоками на одной виртуальной машине.
b. Объекты блокировки файлов безопасны для использования несколькими параллельными потоками.
Относится к 1: Я пытался заблокировать тот же файл из той же JVM, но из разных потоков, и он выдает ошибки, когда поток пытается установить блокировку для уже заблокированного файла. Я думаю, что поведение не такое, как ожидалось от JavaDoc спецификаций.
Относится к 2 a и b: мне кажется, что они противоречат друг другу. Я прав? Если нет, может кто-нибудь объяснить мне, в чем смысл?