发明名称 读写均衡的阻塞队列实现方法及装置
摘要 本发明公开了一种读写均衡的阻塞队列实现方法及装置,涉及计算机软件编程领域,该方法包括以下步骤:向队列中添加N条数据,尝试获取队列的同步锁;确定同步的阻塞队列是否能增加N条数据,若增加N条数据后,队列超出最大设置范围,则继续等待,直到队列允许添加N条记录;若N超过队列最大长度,则队列抛出异常;将N条数据添加到同步的阻塞队列后,添加数据步骤完成,释放队列的同步锁;继续增加或放弃增加,完成添加步骤;放弃继续添加,添加流程结束。本发明能有效缓解突发性、非连续性、非定量性大批量数据处理压力,简化数据队列调用逻辑,去除通用多线程轮询数据的风险,提高应用程序处理突发性大数据量的稳定性。
申请公布号 CN103970597A 申请公布日期 2014.08.06
申请号 CN201410168357.0 申请日期 2014.04.24
申请人 烽火通信科技股份有限公司 发明人 刘言军
分类号 G06F9/46(2006.01)I 主分类号 G06F9/46(2006.01)I
代理机构 北京捷诚信通专利事务所(普通合伙) 11221 代理人 魏殿绅;庞炳良
主权项 一种读写均衡的阻塞队列实现方法,其特征在于,包括以下步骤:A、向同步的阻塞队列添加数据:步骤101、程序向同步的阻塞队列中添加N条数据,N为正整数;步骤102、在多线程情况下,尝试获取队列的同步锁;步骤103、获取队列的同步锁后,在向同步的阻塞队列添加数据之前,确定同步的阻塞队列是否能增加N条数据,如果增加N条数据后,队列超出最大设置范围,则继续等待,直到队列允许添加N条记录;如果N超过队列最大长度,则队列抛出异常;步骤104、将N条数据添加到同步的阻塞队列后,添加数据步骤完成,释放队列的同步锁,保证该队列能被其他线程调用;步骤105、程序继续增加、循环添加;或者放弃增加,完成添加步骤;步骤106、程序放弃继续添加,添加流程结束;B、从同步的阻塞队列读取数据:步骤201、程序向同步的阻塞队列读取数据;步骤202、在多线程情况下,尝试获取队列的同步锁;步骤203、获取队列的同步锁后,如果同步的阻塞队列中的数据为空,那么表示没有数据,继续等待以获取数据入口,直到同步的阻塞队列中依照步骤A添加数据;步骤204、在同步的阻塞队列有数据的情况下,从该队列中一次性获取“最大数目”条数据,所述“最大数目”是队列定义的参数:一次性批量获取的最大数据条目数;如果队列中数据少于“最大数目”条,则返回队列所有的数据,锁条件等待最小粒度时间“最小时间间隔”毫秒,再释放队列的同步锁;所述“最小时间间隔”是队列定义的参数:在队列非堵塞的情况下,两次获取数据之间的最小时间间隔;如果超过“最大数目”条数据,则返回“最大数目”条数据,锁条件等待“平均时间间隔”,再释放队列的同步锁;所述“平均时间间隔”是队列定义的参数:在队列数据拥堵的情况下,两次获取数据之间的平均时间间隔;步骤205、程序继续读取数据,或者放弃读取,完成读取步骤;步骤206、程序放弃继续读取,读取流程结束;步骤A在步骤B之前或者之后。
地址 430074 湖北省武汉市东湖开发区关东科技园东信路5号