33 lines
1.1 KiB
Java
33 lines
1.1 KiB
Java
Creating a Shared File Lock on a File
|
|
|
|
public static void main(String[] args)
|
|
{
|
|
try {
|
|
// Obtain a file channel
|
|
File file = new File("filename");
|
|
FileChannel channel = new RandomAccessFile(file, "rw").getChannel();
|
|
|
|
// Create a shared lock on the file.
|
|
// This method blocks until it can retrieve the lock.
|
|
FileLock lock = channel.lock(0, Long.MAX_VALUE, true);
|
|
|
|
// Try acquiring a shared lock without blocking. This method returns
|
|
// null or throws an exception if the file is already exclusively locked.
|
|
try {
|
|
lock = channel.tryLock(0, Long.MAX_VALUE, true);
|
|
} catch (OverlappingFileLockException e) {
|
|
// File is already locked in this thread or virtual machine
|
|
}
|
|
|
|
// Determine the type of the lock
|
|
boolean isShared = lock.isShared();
|
|
|
|
// Release the lock
|
|
lock.release();
|
|
|
|
// Close the file
|
|
channel.close();
|
|
} catch (Exception e) {
|
|
}
|
|
}
|