¿Por qué asynctask usa Futuretask?
AsyncTask
Facilita la creación de tareas de larga duración que requieren interacción con la interfaz de usuario. En términos relativos, AsyncTask es más liviano y adecuado para un procesamiento asincrónico simple sin la necesidad de subprocesos ni controladores.
AsyncTask es una clase abstracta que define tres tipos genéricos: Params, Progress y Result.
FutureTask
Un cálculo asincrónico cancelable, FutureTask implementa el método básico de Future y proporciona la operación de inicio y cancelación para consultar si el cálculo se ha completado y obtener los resultados del cálculo. El resultado solo se puede obtener después de que se completa el cálculo. El método get se bloqueará cuando el cálculo no se complete. Una vez que se haya completado el cálculo, el cálculo no se podrá reiniciar ni cancelar.
Entonces asynctask debe cancelarse con Futuretask