我想保护我的代码同时在一个目录中做同样的事情,为此我需要一种跨进程互斥锁。由于有问题的目录最终可能会在网络上共享,我想打开一个文件作为这种锁进行写入。
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
try {
FileOutputStream fos = new FileOutputStream("lockfile", false);
try {
System.out.println("Lock obtained. Enter to exit");
br.readLine();
System.out.println("Done");
}
finally {
fos.close();
}
} catch (FileNotFoundException ex) {
System.out.println("No luck - file locked.");
}
}
运行java -jar dist\LockFileTest.jar
两次成功!– 我看到两个控制台提示输入。
我也试过new RandomAccessFile("lockfile", "rw")
了,效果一样。
背景:windows xp,32bit,jre1.5。
我的错误在哪里?这怎么可能?