void dropResource(final R resource){
  final Thread tx=Thread.currentThread();
synchronized (resourceQueues) {
    final ResourceQueue<R,Thread> resourceQueue=resourceQueues.get(resource);
    if (resourceQueue == null) {
      throw new IllegalArgumentException("No such resource: " + resource);
    }
    resourceQueue.clear(tx);
    resourceQueues.remove(resource);
  }
}

void dropResource ( final R resource ) { final Thread tx = Thread . currentThread ( ) ; synchronized ( resourceQueues ) { final ResourceQueue < R , Thread > resourceQueue = resourceQueues . get ( resource ) ; if ( resourceQueue == null ) { throw new IllegalArgumentException ( "No such resource: " + resource ) ; } resourceQueue . clear ( tx ) ; resourceQueues . remove ( resource ) ; } }
drop a resource . the caller must have lock on the resource . all tasks blocked waiting for that resource will be aborted .
