code: public static <T> T run(HTablePool pool, byte[] tableName, HTableRunnable<T> runnable)
              throws IOException {
          HTableInterface hTable = null;
          try {
              hTable = pool.getTable(tableName);
              return runnable.runWith(hTable);
          } catch (Exception e) {
              if (e instanceof IOException) {
                  throw (IOException) e;
              } else {
                  throw new RuntimeException(e);
              }
          } finally {
              if (hTable != null) {
                  pool.putTable(hTable);
              }
          }
      }
docs: Take an htable from the pool, use it with the given HTableRunnable, and return it to
  the pool. This is the "loan pattern" where the htable resource is used temporarily by
  the runnable.