@ GuardedBy ( "lock" ) private void endWaitingFor ( Guard guard ) { int waiters = -- guard . waiterCount ; if ( waiters == 0 ) { // unlink guard from activeGuards for ( Guard p = activeGuards , pred = null ; ; pred = p , p = p . next ) { if ( p == guard ) { if ( pred == null ) { activeGuards = p . next ; } else { pred . next = p . next ; } p . next = null ; // help GC break ; } } } }
Records that the current thread is no longer waiting on the specified guard .