这些都是根据我最近看的《Java实战指南多线程编程(设计模式篇)》所得整理。
模式名称
Half-sync/Half-async(半同步/半异步)模式
模式解决的问题
同步和异步各有各的优势,有没有一个方法,能够既保持了同步编程的简单性,又充分发挥异步编程在提高系统并发性方面的优势。
模式的实现思路
Half-sync/Half-async(半同步/半异步)模式是一个分层架构。它包含三个层次:异步任务层、同步任务层和队列层。Half-sync/Half-async(半同步/半异步)模式的核心思想是如何将系统中的任务进行恰当的分解,使各个子任务落入合适的层次中。
低级的任务或者耗时较短的任务可以安排在异步任务层。而高级的任务或者耗时较长的任务可以安排在同步任务层。而异步任务层和同步任务层这两层之间的写作通过队列层进行解耦:队列层负责异步任务层和同步任务层之间的数据交换。
Half-sync/Half-async(半同步/半异步)模式的参与者:
AsybcTask异步任务,负责接收来自客户端的输入,对其进行初步处理,并通过对垒与相应的同步任务通信:duspatch()对输入进行初步处理,并构造相应消息放入队列由相应的同步任务进行处理。
Queue队列,异步任务层和同步任务层进行通信的中介:enqueue()消息入队列,dequeue()消息出队列
SyncTask同步任务,负责处理队列中消息锁对应的计算:run执行同步任务