package com.ronsoft.books.nio.channels; import java.nio.ByteBuffer; import java.nio.IntBuffer; import java.nio.channels.FileChannel; import java.nio.channels.FileLock; import java.io.RandomAccessFile; import java.util.Random; /** * Test overlapping locks on different file channels. * * @author Ron Hitchens (ron@ronsoft.com) */ public class LockOverlap { public static void main (String [] argv) throws Exception { if (argv.length == 0) { System.out.println ("Usage: filename"); return; } String filename = argv [0]; RandomAccessFile raf1 = new RandomAccessFile (filename, "rw"); FileChannel fc1 = raf1.getChannel(); RandomAccessFile raf2 = new RandomAccessFile (filename, "rw"); FileChannel fc2 = raf2.getChannel(); System.out.println ("Grabbing first lock"); FileLock lock1 = fc1.lock (0L, Integer.MAX_VALUE, false); System.out.println ("Grabbing second lock"); FileLock lock2 = fc2.lock (5, 10, false); System.out.println ("Exiting"); } }