什么网站都能找得到
Half-sync/Half-async模式集成了同步编程和异步编程,通过同步任务和异步任务的共同协作来完成计算,既保持了同步编程的简单性,又充分发挥异步编程在提高系统并发性方面的优势。
Half-sync/Half-async模式是一个分层架构。它包含3个层:异步任务层、同步任务层和队列层。
Half-sync/Half-async模式的关键是如何将系统中的任务进行恰当的分解,使各个子任务落入合适的层次中。
低级的任务(如与用户界面有关的任务)或者耗时较短的任务可以安排在异步任务层(快速返回结果)。而高级的任务(如数据库访问)或者耗时较长的任务可以安排在同步任务层。异步任务层和同步任务层通过队列层进行协作:队列层负责异步任务层和同步任务层之间的数据交换。
● AsyncTask:异步任务,负责接收客户端的输入,对其进行初步处理,并通过队列与相应的同步任务通信。
◇ dispatch:对输入进行初步处理,并构造相应消息放入队列由相应的同步任务进行处理。
● Queue:队列,异步任务层和同步任务层的通信中介。
◇ enqueue:消息入队列。
◇ dequeue:消息出队列。
SyncTask:同步任务,负责处理队列中的消息所对应的计算。
◇ run:执行同步任务。
第1步:客户端调用AsyncTask的dispatch方法。
第2、3步:dispatch方法对输入进行初步处理并构造相应消息放入队列,返回。
第4步:dispatch方法返回。
第5步:同步任务的run方法被JVM或者线程池调用。
第6、7步:同步任务的run方法取队列中的消息,并根据消息执行相应操作。
第1~4步运行在客户端线程中的,第5~7步是运行在后台线程(工作者线程)中的。