在Java中,访问RandomAccessFile时,从FileChannel获取文件锁的保证方法是什么?

在Java中,访问RandomAccessFile时,从FileChannel获取文件锁的保证方法是什么?,java,nio,nonblocking,filelock,Java,Nio,Nonblocking,Filelock,我正在尝试使用 FileLock lock(long position, long size,boolean shared) 根据javadoc,在FileChannel对象中,它可以抛出OverlappingFileLockException。当我用2个线程创建一个测试程序时,lock方法似乎在等待获取锁(独占和非独占),但在实际场景中,当线程数增加时,会抛出重叠文件锁异常,并且由于文件锁表中的块,处理会减慢 避免重叠FileLockException获取锁的最佳方法是什么?避免区域重叠。您

我正在尝试使用

FileLock lock(long position, long size,boolean shared)
根据javadoc,在
FileChannel
对象中,它可以抛出
OverlappingFileLockException
。当我用2个线程创建一个测试程序时,lock方法似乎在等待获取锁(独占和非独占),但在实际场景中,当线程数增加时,会抛出重叠文件锁异常,并且由于文件锁表中的块,处理会减慢


避免重叠FileLockException获取锁的最佳方法是什么?

避免区域重叠。您还可以尝试将
shared
标志设置为
true
。但要注意,共享锁依赖于操作系统。因此,它们可能并非在所有系统上都可用。

共享标志在读取时可以设置为true,但在写入时必须为独占锁。因此,共享必须是错误的。本案例的阅读和写作都在进行中。