common_helper/src/main/java/com/xiongyingqi/util/ConcurrencyThrottleSupport.java
protected void afterAccess() {
        if (this.concurrencyLimit >= 0) {
            synchronized (this.monitor) {
                this.concurrencyCount--;
                if (logger.isDebugEnabled()) {
                    logger.debug("Returning from throttle at concurrency count " + this.concurrencyCount);
                }
                this.monitor.notify();
            }
        }
    }
protected void afterAccess() {
        if (this.concurrencyLimit >= 0) {
            synchronized (this.monitor) {
                this.concurrencyCount--;
                if (logger.isDebugEnabled()) {
                    logger.debug("Returning from throttle at concurrency count " + this.concurrencyCount);
                }
                this.monitor.notify();
            }
        }
    }
protected void afterAccess ( ) { if ( this . concurrencyLimit >= 0 ) { synchronized ( this . monitor ) { this . concurrencyCount -- ; if ( logger . isDebugEnabled ( ) ) { logger . debug ( "Returning from throttle at concurrency count " + this . concurrencyCount ) ; } this . monitor . notify ( ) ; } } }
To be invoked after the main execution logic of concrete subclasses.

@see #beforeAccess()
To be invoked after the main execution logic of concrete subclasses .