@Override
    public void startup() throws LifeCycleException {
        super.startup();

        for (UserProcessor<?> userProcessor : userProcessors.values()) {
            if (!userProcessor.isStarted()) {
                userProcessor.startup();
            }
        }

        if (this.addressParser == null) {
            this.addressParser = new RpcAddressParser();
        }

        ConnectionSelectStrategy connectionSelectStrategy = option(BoltGenericOption.CONNECTION_SELECT_STRATEGY);
        if (connectionSelectStrategy == null) {
            connectionSelectStrategy = new RandomSelectStrategy(this);
        }
        if (this.connectionManager == null) {
            DefaultClientConnectionManager defaultConnectionManager = new DefaultClientConnectionManager(
                connectionSelectStrategy, new RpcConnectionFactory(userProcessors, this),
                connectionEventHandler, connectionEventListener);
            defaultConnectionManager.setAddressParser(this.addressParser);
            defaultConnectionManager.startup();
            this.connectionManager = defaultConnectionManager;
        }
        this.rpcRemoting = new RpcClientRemoting(new RpcCommandFactory(), this.addressParser,
            this.connectionManager);
        this.taskScanner.add(this.connectionManager);
        this.taskScanner.startup();

        if (isConnectionMonitorSwitchOn()) {
            if (monitorStrategy == null) {
                connectionMonitor = new DefaultConnectionMonitor(new ScheduledDisconnectStrategy(),
                    this.connectionManager);
            } else {
                connectionMonitor = new DefaultConnectionMonitor(monitorStrategy,
                    this.connectionManager);
            }
            connectionMonitor.startup();
            logger.warn("Switch on connection monitor");
        }
        if (isReconnectSwitchOn()) {
            reconnectManager = new ReconnectManager(this.connectionManager);
            reconnectManager.startup();

            connectionEventHandler.setReconnector(reconnectManager);
            logger.warn("Switch on reconnect manager");
        }
    }
Shutdown.
<p>
Notice:<br>
  <li>Rpc client can not be used any more after shutdown.
  <li>If you need, you should destroy it, and instantiate another one.
src/main/java/com/alipay/remoting/rpc/RpcClient.java