JDK 5 Future Pattern
使用Future Pattern,应用需要提供自己的Callable
接口实现, 并且确定使用哪种线程池(由Executors创建)。Future Pattern适用于希望有个任务放在后台执行,前台在需要的时候去查询后台执行情况。也可以利用FutureTask
的done
方法,在任务完成时,获得FutureTask的执行结果并通知应用,Android中的AsyncTask就是用的第二种通知的办法。
Future Patter交互
Executors线程池
三种基本的线程池可以由Executors类创建(public static ExecutorService newXXX
):
- Single Thread Pool: newSingleThreadExecutor()
- Fixed Thread Pool: newFixedThreadPool (int nThreads)
- Cached Thread Pool: newCachedThreadPool()
Andrid AsyncTask
android.os.AsyncTask<Params, Progress, Result>
实际上是Future
之上的封装。在AsyncTask
中的私有静态内部抽象类WorkerRunnable<Params, Result> implements Callable<Result>
提供了Callable
接口的一个实现。
AsynTask
类的主要目的是作为(Thread
和Handler
的)Helper类在后台执行短暂操作(最多几秒钟),然后更新UI线程。一个异步任务(Asynchronous Task)由后台计算线程运行,执行结果发布到UI线程。