code: @Override
      public void run() {
          synchronized (lock) {
              if (mIsDone || mIsCancelled) {
                  return;
              }
              mIsStarted = true;
          }
  
          try {
              t = mCallable.call();
          } catch (Exception e) {
              e.printStackTrace();
          }
  
          synchronized (lock) {
              mIsDone = true;
              lock.notifyAll();
          }
  
      }
docs: Where the call actually happens. If you submit the call through
  GVRContext.runOnGlThread(). This will be automatically called in GL
  thread. You can also directly call this function while in GL thread.