我读了这篇文章。谁能告诉我这是否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 虚拟机持有。它们不适用于控制同一虚拟机内的多个线程对文件的访问。
湾。文件锁对象可以安全地被多个并发线程使用。
与 1 相关:我试图从同一个 JVM 但从不同的线程锁定同一个文件,当一个线程试图锁定已经锁定的文件时它会抛出错误。我认为这种行为不是JavaDoc规范所期望的。
与 2 a 和 b 相关:在我看来,它们是矛盾的。我对吗?如果没有,谁能解释我有什么意义?