Java - 文件共享文件锁定问题

3

以下是我提供的文件锁定和解锁方法:

锁定方法:

fileLock = fileChannel.tryLock();

if (fileLock != null)
System.out.println("File is locked");

解锁方法,
fileLock.release();

现在,这两种方法被两个并发进程访问。如果其中一个进程崩溃,在解锁之前,另一个进程无法访问该文件直到JVM关闭。有没有人能帮我,是否可能(以及如何)指定锁定文件的某个时间限制。


release() 调用是否被包含在 try{...} catch(){...} 后的 finally 块中?为什么其中一个线程会默默崩溃?还有一个问题。您说:不同的进程,这意味着不同的 Java 线程还是真正不同的操作系统进程? - Grooveek
@Arpssss:你所说的“process”是指“线程”吗?如果一个进程崩溃,那对我来说意味着JVM已经关闭了。我怀疑你的“fileLock.release()”可能需要放在“finally”块中。 - Ash
@Ash,不,我最终已经完成了。但是为了简单起见,我没有写那个部分。而且我使用的是进程,而不是线程。谢谢。 - Arpssss
好的。那么您有两个正在运行的Java应用程序,其中一个崩溃并退出JVM(以及该进程),但是文件被锁定了吗?您使用的是什么操作系统和JVM? - Ash
1个回答

0

使用单例模式。这样只有一个线程才能访问您的文件。


1
无意义。不是答案。OP在谈论多个进程 - user207421
抱歉,显然我没有正确理解这个问题。 - alnasfire

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接