jrwlock is a class that implements read/write locking in java,
and notify the developer of non released locks.
CVS:
If you run this wrong code:
package net.sourceforge.jrwlock.samples;
import net.sourceforge.jrwlock.RWLock;
public class Sample
{
public static final RWLock lock= new RWLock();
public static void testNoRelease()
{
RWLock.Lock l= lock.getReadLock();
}
public static void main(String[] args)
throws InterruptedException
{
testNoRelease();
System.gc();
}
}
You will get the line where the non released lock has been acquired:
1 [Finalizer] ERROR net.sourceforge.jrwlock.RWLock - lock not released by code, releasing and throwing exception:
java.lang.RuntimeException: lock released by finalizer
at net.sourceforge.jrwlock.RWLock$Lock.<init>(RWLock.java:124)
at net.sourceforge.jrwlock.RWLock.getReadLock(RWLock.java:55)
at net.sourceforge.jrwlock.samples.Sample.testNoRelease(Sample.java:11)
at net.sourceforge.jrwlock.samples.Sample.main(Sample.java:18)
RWLock was initially developed by Amandeep Singh (http://www.asingh.net/technical/rwlocks.html)
then jrwlock was modified by Andrea A.A. Gariboldi