code: public boolean release(final Object resource) throws IOException
     {
        final Thread myThread = Thread.currentThread();
        final VDResource res = resources.get(resource);
        if (res != null)
        {
           if (res.removeUserLock(myThread))
           {
              synchronized (res.lock)
              {
                 // unlock holder
                 res.lockSupport.unlock();
  
                 // locked by this thread (by me)
                 // ...Wakes up a single thread that is waiting on this object's monitor
                 res.lock.notify();
                 // resources will be reputed with new VDResource in aquire() of another Thread
                 resources.remove(resource);
              }
              return true;
           }
        }
  
        return false;
     }
docs: Release resource.
  
  @param resource
  Object
  @return boolean, true - if resource is released, false - if the resource still in use.
  @throws IOException
  if unlock error occurs