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