code: public synchronized FutureTask<Boolean> start() {
          this.sessionFactory.start();
          if (rpcTimeoutChecker != null) {
              rpcTimeoutChecker.getThread().start();
          }
          final FutureTask<Boolean> futureTask = new FutureTask<Boolean>(
                  new Callable<Boolean>() {
                      @Override
                      public Boolean call() throws Exception {
                          while (!ExecutionVenueNioClient.this.sessionFactory.isConnected()) {
                              Thread.sleep(50);
                          }
                          return true;
                      }
                  });
          final Thread thread = new Thread(futureTask);
          thread.setDaemon(true);
          thread.start();
          return futureTask;
      }
docs: Starts the client
  
  @return a Future<Boolean> that is true once the connection is established