多线程设计模式——Half-sync/Half-async(半同步/半异步)模式

本文介绍了Half-sync/Half-async模式,该模式结合同步和异步的优势,用于提高系统并发性。文章阐述了模式的解决的问题、实现思路,并通过告警系统为例展示了其实现过程。同时,分析了模式的优点,包括增加系统并发性和保持同步编程的简单性。最后,提出了需要注意队列积压和同步层处理速度的问题。
摘要由CSDN通过智能技术生成

这些都是根据我最近看的《Java实战指南多线程编程(设计模式篇)》所得整理。

模式名称

Half-sync/Half-async(半同步/半异步)模式

模式解决的问题

同步和异步各有各的优势,有没有一个方法,能够既保持了同步编程的简单性,又充分发挥异步编程在提高系统并发性方面的优势。

模式的实现思路

Half-sync/Half-async(半同步/半异步)模式是一个分层架构。它包含三个层次:异步任务层、同步任务层和队列层。Half-sync/Half-async(半同步/半异步)模式的核心思想是如何将系统中的任务进行恰当的分解,使各个子任务落入合适的层次中。
低级的任务或者耗时较短的任务可以安排在异步任务层。而高级的任务或者耗时较长的任务可以安排在同步任务层。而异步任务层和同步任务层这两层之间的写作通过队列层进行解耦:队列层负责异步任务层和同步任务层之间的数据交换。
Half-sync/Half-async(半同步/半异步)模式的参与者:
AsybcTask异步任务,负责接收来自客户端的输入,对其进行初步处理,并通过对垒与相应的同步任务通信:duspatch()对输入进行初步处理,并构造相应消息放入队列由相应的同步任务进行处理。
Queue队列,异步任务层和同步任务层进行通信的中介:enqueue()消息入队列,dequeue()消息出队列
SyncTask同步任务,负责处理队列中消息锁对应的计算:run执行同步任务

Created with Raphaël 2.1.0 Client Client AsyncTask AsyncTask Queue
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值