У меня есть программа, которая блокирует файл так, где lock
— это файл:
FileChannel channel = new RandomAccessFile(lock,"rw").getChannel();
FileLock lock = channel.lock();
Основная цель - с помощью дополнительной программы проверить, не была ли программа убита. Код вторичной программы выглядит так:
boolean isNotLocked = false;
while (true){
while (isNotLocked){
lock.renameTo(lock);
}
//run the program again
}
Это работает в первый раз, и программа запускается снова, но после повторного запуска программы вторичная программа выдает OverlappingFileLockException
и завершается. Основная программа создает замок, а не второстепенный.
lock.deleteOnExit();
с помощью rwd. А проверка со вторичной программой этоlockFile.exists()
. Если нет, вы можете создать еще один. - person newuserua_ext   schedule 11.11.2016Runtime.getRuntime().addShutdownHook(new releaseLock());
- person user2352923   schedule 11.11.2016