这竟然是一个乌龙。
DefaultHttpClient 支持并发连接。问题出在我对 AsyncTask 的理解上。一直以为 AsyncTask 的 doInBackground 是完全异步执行,执行完后在 Main Thread 中调用 onPostExecute。
但事实上,从 HonyComb 开始, 多个 AsyncTask 被放入另外一个 background Thread 中,顺序执行了。比如这样MainThread {
       AsyncTaks1 (...)
      {
           doInBackground1{new DefaultHttpClient().execute(...);} 
      }.execute(...);
      new AsyncTaks2 (...)
      {
          doInBackground2() {new DefaultHttpClient().execute(...)}
      }.execute(...);
}
那么 doInBackground2 会在 doInBackground1 函数执行返回后才会继续执行,虽然 mainThread 本身不会卡住。