Java Future Pattern和Android AsyncTask
2016-04-22 14:42
295 查看
JDK 5 Future Pattern
使用Future Pattern,应用需要提供自己的Callable接口实现, 并且确定使用哪种线程池(由Executors创建)。Future Pattern适用于希望有个任务放在后台执行,前台在需要的时候去查询后台执行情况。也可以利用
FutureTask的
done方法,在任务完成时,获得FutureTask的执行结果并通知应用,Android中的AsyncTask就是用的第二种通知的办法。
Future Patter交互
Created with Raphaël 2.1.0Future PatternApplicationApplicationCallableCallableFutureTaskFutureTaskExecutorsExecutorsExecutorServiceExecutorServicectoraBackgroundTaskctor(aBackgroundTask)aFutureTasknewFixedThreadPool(1)anExecutoranExecutorsubmit(aFutureTask)doSomething...get()resultExecutors线程池
三种基本的线程池可以由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线程。
Created with Raphaël 2.1.0Andorid AsyncTask (Future Pattern)AsyncTaskAsyncTaskWorkerRunnableWorkerRunnableFutureTaskFutureTaskExecutorsExecutorsExecutorServiceExecutorServicectormWorkerctor(mWorker)mFuturenewFixedThreadPool(1)??anExecutoranExecutorsubmit(aFutureTask)?doneget()mFuture.get()Result rpostResultIfNotInvoked(r)postResult(r)发送消息到Android消息队列
Reference
http://developer.android.com/reference/android/os/AsyncTask.html相关文章推荐
- Android Property Animation
- android DecimalFormat使用,保留小数点后x位
- Android 二维码扫描框 加四个角及中间横线自动下滑
- android 百度地图定位开发2
- android 百度地图定位开发1
- Android PullToRefresh (ListView GridView 下拉刷新) 使用详解
- Android 4.4 Graphic系统详解(2) VSYNC的生成
- Android之自定义生成彩色二维码
- Android内存管理机制
- Android Vibrator的使用
- Android API,版本对照
- Android程序框架设计思想01
- Android联系人列表,实现ListView的A-Z字母排序和过滤搜索功能,字母条目上顶
- android shape
- Android Mms之:草稿管理的应用
- Android App中制作仿MIUI的Tab切换效果的实例分享
- 了解Android及开发前准备
- Android技术积累:开发规范
- Android SO逆向-对象的继承和虚函数
- android studio 快捷键5.