public void run() {
        while (true) {
            long now = (new Date()).getTime();
            int size = conns.size();
            for (int i = 0; i < size; i++) {
                ConnectionWrapper conn = conns.get(i);
                if (null == conn || conn.isFree()) {
                    continue;
                }
                long lut = conn.getLastUseTime();
                if (timeout <= now - lut || !conn.getConnection().isConnected()) {
                    // System.out.println(Thread.getName()+" reconnecting the timeout connection["+conn+"]");
                    conn.reconnect();
                }
            }

            try {
                Thread.sleep(timeout / 2);
            } catch (Exception ex) {

            }
        }

    }