public void release ( final long identifier ) throws InterruptedException , InvalidIdentifierException { final ComplexCondition call = getSleeper ( identifier ) ; if ( call . isHeldByCurrentThread ( ) ) { throw new RuntimeException ( "release() must not be called on same thread as block() to prevent deadlock" ) ; } try { call . lock ( ) ; LOG . log ( Level . FINER , "Waking caller sleeping on identifier [{0}]" , identifier ) ; call . signal ( ) ; } finally { call . unlock ( ) ; } }
Wake the caller sleeping on the specific identifier .