1. AsyncTask内部还是用Handler(私有静态内部类的形式)实现通信,通过线程池管理执行后台任务(FutureTask会执行WorkerRunnable),WorkRunnable相当于后台线程任务,会拿来实例化线程对象,此线程一旦执行(其call()方法的执行,实际由FutureTask控制)会回调doInBackground()方法并把方法返回值作为消息Message的对象发送给Handler。FutureTask中封装了WorkRunnable,负责执行WorkRunnable任务(FutureTask中的done()方法会回调WorkRunnable中的call()方法);
2. Executor执行者负责把FutureTask封装成Runnable队列(会在其run()方法中调用FutureTask的done()方法)并依次取出递给线程池,而线程池ThreadPoolExecutor则负责用它来创建线程对象Thread进行执行(执行Runnable的run()方法);
3. 执行者负责维护任务队列,先进先取出,但线程池每次只执行一个任务,相当于单线程;
5. 一个任务只能执行一次,如果在执行时或者执行结束后再次调用execute()方法会抛异常;