private void resetTailSequenceNumber ( ) throws ObjectManagerException { if ( Tracing . isAnyTracingEnabled ( ) && trace . isEntryEnabled ( ) ) trace . entry ( this , cclass , "resetTailSequenceNumber" ) ; for ( int i = 0 ; i < subListTokens . length ; i ++ ) { subLists [ i ] = ( ( ConcurrentSubList ) subListTokens [ i ] . getManagedObject ( ) ) ; // In case another thread is currently removing the tail, take a safe copy. Token tailToken = subLists [ i ] . tail ; // Establish the highest existing tailSequenceNumber. if ( tailToken != null ) { ConcurrentSubList . Link tail = ( ConcurrentSubList . Link ) tailToken . getManagedObject ( ) ; tailSequenceNumber = Math . max ( tailSequenceNumber , tail . sequenceNumber ) ; } // if (tailToken != null). } // for subList. tailSequenceNumberSet = true ; if ( Tracing . isAnyTracingEnabled ( ) && trace . isEntryEnabled ( ) ) trace . exit ( this , cclass , "resetHeadSequenceNumber" ) ; }
Reset the tailSequenceNumber . Caller must be synchronized on tailSequenceNumberLock .