AsyncTask использует технику "пула потоков". Каждый AsyncTask, который вы запускаете, попадает в очередь; в пуле есть несколько свободных потоков (или они создаются по мере необходимости до определенного предела), ожидающих выполнения задач. Свободный поток из пула берет ваш AsyncTask и выполняет его, а затем возвращается в пул. Затем процесс повторяется до тех пор, пока в очереди не останется больше задач.
Этот подход имеет 2 важных особенности:
- нет затрат на создание потока каждый раз
- в случае огромного числа задач, производительность системы снижается изящно : большинство задач будут ждать в очереди, и лишь немногие из них будут
быть исполненным за один раз; в конце концов все они будут казнены.
В противном случае, если для каждой задачи был запущен отдельный поток,
системе, скорее всего, не хватит памяти или потоков, или задачи
навсегда до конца.
Поток, который вы видите в DDMS после завершения AsyncTask, является свободным потоком в пуле.