RandomAccessFile file = new RandomAccessFile("test.txt", "rw"); FileChannel fileChannel = file.getChannel(); FileLock lock = fileChannel.lock();
只听到从知秋君办公室传来知秋君的声音: 情人怨遥夜,竟夕起相思。有谁来对上联或下联?
上面的java文件锁是进程级别
的,也就是说,如果一个进程的一个线程获取锁后,在没有释放该锁之前又有另外一个线程要获取同一个文件的锁,这时这个线程并不会等待,而是会抛出OverlappingFileLockException
解决方法:使用synchronized
此代码由一叶知秋网-知秋君整理synchronized (o) { RandomAccessFile file = new RandomAccessFile("test.txt", "rw"); FileChannel fileChannel = file.getChannel(); FileLock lock = fileChannel.lock(); }