java无锁消费者框架_无锁并行框架多生产者多消费者模型

下面看一下多生产多消费者的模式,下面的代码是模拟100个生产者,每个生产者生产100个事件,然后有3个消费者,同时进行消费,共消费1W个事件,

下面看一下代码:

3d98eb6ef2e58d6f004d317a0dc0e032.png

这边new出了3个消费者,并把消费者数组放入workPool这个消息队列中,然后在RingBuffer中获取事件,进行消费:

看一下event类:Order

b4f6e71bbf52f7f823d88be1c70e04c0.png

下面看一下生产者:

8e4d9181abb29a9022a402941c43a585.png

把数据生产完成后,放入ringBuffer,然后进行事件发布

在看一下消费者:

75561e955f4bbe83541d2876a3f400c3.png

通过一个原子类进行消费的记录查看哪个消费者消费了多少个事件,

查看一下打印的结果:

04a04414cab8254e462ef12ad70aacc9.png

看一下最后的打印结果:

3个消费者,总共消费1000个事件,中间的协调通过SequenceBarrier进行消费协调;这种实现模式就是多消费者多生产者。需要注意的是RingBuffer和disruptor使用的范围,RingBuffer适合使用在不复杂消费模型上面,disruptor适合使用在复杂消费模型上,例如,菱形,顺序,六边形等。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/506392.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

win10无法连接到这个网络_电脑无法连接网络怎么办?(有线网络篇)

哈喽!各位小伙伴大家好呀!好久不见,近期真的太多小伙伴咨询网络问题了,没办法,虽然以前写过相关文章,断网、网络卡、慢、掉线的常规解决方法不过可能还不够细致,本篇就尽量把所有的问题都提出解…

LeetCode反转链表java_Leetcode 反转链表系列 图解详细过程

对于一个程序猿来说,数据结构和算法的重要性就不用我多说了吧,算法题已然成了现在大厂笔试面试的重头戏,废话少说,Leetcode 刷起来呀。说起刷 Leetcode,我建议你按 tag 刷,不然只能像无头苍蝇,东…

amd插帧技术如何开启_联想ThinkPad笔记本电脑如何开启CPU的虚拟化技术图文教程...

联想ThinkPad笔记本电脑如何开启CPU的虚拟化技术图文教程很多情况下可能我们都需要开启CPU虚拟化技术,例如我们需要打开安卓模拟器,在打开安卓模拟器的时候如果提示您需要CPU虚拟化技术,那么我们需要在主板BIOS设置中进行开启,下面…

java中的同步关键字_Java中进程同步问题,锁 和synchronized 关键字的用法

标签:•对象的锁标志–每个对象都有一个锁标志–使用synchronized可与锁标志交互•synchronized关键字的用法有两种:–synchronized语句–synchronized方法•synchronized语句:synchronized (obj){//在synchronized语句块中//对obj的成员只能…

没有内存条电脑能开机吗_换内存加固态,老电脑也能快到起飞,附纯国产内存条雷赤测评...

我在公司里用的那台电脑是品牌机,配置有点低,处理器是i3-6100,内存是4GB,硬盘是1TB的机械,这个配置日常办公是没有问题的,但是现在有一些活已经超出了这个配置的能力,加之近期的一些工作还需要在…

java方法报错_.setUndecorated 方法报错

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼import java.awt.*;import javax.swing.*;public class FrameTest{public static void main(String[] args){EventQueue.invokeLater(new Runnable(){public void run(){JFrame frame new SimpleFrame();frame.setUndecorated(tru…

java面试加分_不只是给面试加分 -- Java WeakReference的理解与使用

前言: 看到篇帖子, 国外一个技术面试官在面试senior java developer的时候, 问到一个weak reference相关的问题. 他没有期望有人能够完整解释清楚weak reference是什么, 怎么用, 只是期望有人能够提到这个concept和java的GC相关. 很可惜的是, 20多个拥有5年以上java开发经验的面…

嵌入式编程要不要学数据结构_少儿编程要不要学?其实国家早就给出了答案……...

随着人工智能的热度不断攀升,少儿编程越来越火,逐渐成为爸妈们的热门话题。自家的孩子适不适合学习少儿编程,很多专业人士发出了各种不同的声音。这也让很多望子成龙的家长一头雾水,分不清究竟该何去何从?那么&#xf…

nrf52840 gpiote如何配置中断输入_西门子S7-200 SMART PID回路控制,配置PID向导,查看项目组件...

本篇我们继续来学习西门子S7-200 SMART的PID回路控制,首先介绍一下如何配置PID向导。在工具菜单功能区单击PID按钮打开PID回路向导对话框,选择要组态的回路,最多可组态8个回路,这里我们选择回路0。选择回路0在左侧的树视图中单击回…

java 大流量高并发_【BAT面试题】如何应对大流量、高并发??

这是一道BAT大厂的面试题所谓高并发指的是:在同时或极短时间内,有大量的请求到达服务端,每个请求都需要服务端耗费资源进行处理,并做出相应的反馈。常用的高并发处理的思路与手段从服务端视角看高并发服务端处理请求需要耗费服务端…

创建一个storageevent事件_谈谈StorageEvent

编者按:本文作者 刘观宇,360 奇舞团高级前端工程师、技术经理,W3C CSS 工作组成员。纷纷红紫已成尘,布谷声中夏令新。夹路桑麻行不尽,始知身是太平人。 ——宋.陆游 《初夏绝句》我们在开发多Tab应用时候,常…

PHP留言并展示_利用PHP实现简单留言板

跟随bilibili教学视频一步一步实现简单的PHP留言板。第一个代码文件item.php,创建了一个Message,并连接了数据库。class Message{var $name;var $time;var $content;function __construct($n, $t, $c){$this->name $n;$this->time $t;$this->…

matlab数组平方的计算自定义函数_从零开始的matlab学习笔记——(38)简单数论计算函数:取整,gcd,lcm,质数,全排列...

matlab应用——求极限,求导,求积分,解方程,概率统计,函数绘图,三维图像,拟合函数,动态图,傅里叶变换,随机数,优化问题....更多内容尽在个人专栏&a…

bootstraptable导出excel独立使用_使用 EasyPOI 优雅导出Excel模板数据(含图片)

EasyPOI功能如同名字Easy,主打的功能就是容易,让一个没接触过POI的人员可以方便的写出Excel导出,Excel模板导出,Excel导入,Word模板导出。通过简单的注解和模板语言(熟悉的表达式语法),完成以前复杂的写法。…

php弹幕技术轮询,PHP+Ajax实现在线聊天长轮询

HTML首先我们放置一个获取数据按钮和数据存放地方#msg。jQuery我们向ajax.php请求,请求的时间设置80秒。在这80秒中若没有从服务端返回‘success’则一直保持连接状态,直到有数据返回或‘success’的值为0才关闭连接。在关闭连接后在继续下一次的请求。$(function()…

import pandas as pd什么意思_Pandas万花筒:让绘图变得更美观

全文共1803字,预计学习时长10分钟图源:tehrantimes流行 Python 数据分析库 Pandas 中的绘图功能一直是迅速绘制图表的首选之一。但是,其可用的可视化效果总是十分粗略,实用有余、美观不足。笔者常用 Pandas 的绘图功能快速地执行一…

php 匹配关键字,php获取搜索引擎搜索关键词关键字的正则表达式实现方法

获取搜索引擎关键词,然后针对性的显示匹配结果,对于提升用户访问友好性有很大的帮助。php获取搜索引擎关键词的方法,网上有一些,但是并不全面,而使用正则表达式则可以简单的实现该功能。参见如下代码示例:h…

jquery name选择器_jquery笔记

jQuery是一个封装好的特定的集合(方法和函数)。是一个库,封装了很多预先定义好的函数在里面。概念jQuery是一个快速,简洁的js库。j是js,query是查询,把js中的DOM操作作了封装,我们可以快速的查询使用里面的功能。jQuer…

python数据库框架_目前最受欢迎的12个Python开源框架

1 Django Django是一款用Python语言写的免费开源的 Python Web应用开发框架,它遵循模型 -视图-控制器(MVC)的架构模式。它是由非营利Django维护软件基金会(DSF)和3条款BSD许可下可用,鼓励快速发展和实用的设计。Django同时是一款在数据库功能、后台功能、…

jenkins java常用插件下载,Jenkins简单介绍以及插件入门

Jenkins是一个广泛用于持续构建的可视化web工具,就是各种项目的的“自动化”编译、打包、分发部署,将以前编译、打包、上传、部署到Tomcat中的过程交由Jenkins,Jenkins通过给定的代码地址,将代码拉取到jenkins宿主机上&#xff0c…