@Override
    public void run() {
        this.lastRun = System.currentTimeMillis();
        this.timeBetweenRuns = this.props.getReleaserInterval();
        log.debug("Time between runs: " + this.timeBetweenRuns);
        while (!this.shouldClose) {
            // pool is closed, join pool manager
            if (this.pool.isClosed()) {
               return;
            }
            if(((System.currentTimeMillis() - this.lastRun) > this.timeBetweenRuns)) {
                // make sure busy connections exist
                if (this.busyConnections != null && this.busyConnections.size() > 0) {
                    for (int i = 0; i < this.busyConnections.size(); i++) {
                        // just a peek
                        Connection conn = this.busyConnections.peek();
                        try {
                            // if connection is closed, release it
                            if (conn != null && conn.isClosed()) {
                                this.pool.releaseConnection(conn);
                                log.debug("Connection Released by ConnectionReleaser: " + conn);
                            }
                        } catch (SQLException e) {
                            log.error("Connection could not be released to the pool", e);
                        }
                    }//for
                    this.lastRun = System.currentTimeMillis();
                }
            }
        }//while
    }