code: public final AsyncTask<Params, Progress, Result> execute(Params... params) {
          return executeOnExecutor(sDefaultExecutor, params);
      }
docs: Executes the task with the specified parameters. The task returns
  itself (this) so that the caller can keep a reference to it.
  
  <p>Note: this function schedules the task on a queue for a single background
  thread or pool of threads depending on the platform version.  When first
  introduced, AsyncTasks were executed serially on a single background thread.
  Starting with DONUT, this was changed
  to a pool of threads allowing multiple tasks to operate in parallel. Starting
  HONEYCOMB, tasks are back to being
  executed on a single thread to avoid common application errors caused
  by parallel execution.  If you truly want parallel execution, you can use
  the {@link #executeOnExecutor} version of this method
  with {@link #THREAD_POOL_EXECUTOR}; however, see commentary there for warnings
  on its use.
  
  <p>This method must be invoked on the UI thread.
  
  @param params The parameters of the task.
  
  @return This instance of AsyncTask.
  
  @throws IllegalStateException If {@link #getStatus()} returns either
  {@link AsyncTask.Status#RUNNING} or {@link AsyncTask.Status#FINISHED}.
  
  @see #executeOnExecutor(java.util.concurrent.Executor, Object[])
  @see #execute(Runnable)