当前位置: 首页 > news >正文

响应式网站建设费用/广告免费发布信息平台

响应式网站建设费用,广告免费发布信息平台,wordpress最新更新列表页面,重庆市网络公司多生产者多消费者模拟需求:1、创建100个订单生产者,每个生产者生产100条订单,总共会生产10000条订单,由3个消费者进行订单消费处理。2、100个订单生产者全部创建完毕,再一起生产消费订单数据 1、定义事件 package com.…

多生产者多消费者模拟需求:
1、创建100个订单生产者,每个生产者生产100条订单,总共会生产10000条订单,由3个消费者进行订单消费处理。
2、100个订单生产者全部创建完毕,再一起生产消费订单数据

1、定义事件

package com.ljq.multi;public class Order {private String id;// IDprivate String name;private double price;// 金额public String getId() {return id;}public void setId(String id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public double getPrice() {return price;}public void setPrice(double price) {this.price = price;}}

  

2、生产者

package com.ljq.multi;import com.lmax.disruptor.RingBuffer;/*** 生产者* * @author Administrator**/
public class Producer {private final RingBuffer<Order> ringBuffer;public Producer(RingBuffer<Order> ringBuffer) {this.ringBuffer = ringBuffer;}/*** onData用来发布事件,每调用一次就发布一次事件 它的参数会用过事件传递给消费者*/public void onData(String data) {// 可以把ringBuffer看做一个事件队列,那么next就是得到下面一个事件槽long sequence = ringBuffer.next();try {// 用上面的索引取出一个空的事件用于填充(获取该序号对应的事件对象)Order order = ringBuffer.get(sequence);// 获取要通过事件传递的业务数据order.setId(data);} finally {// 发布事件// 注意,最后的 ringBuffer.publish 方法必须包含在 finally 中以确保必须得到调用;如果某个请求的// sequence 未被提交,将会堵塞后续的发布操作或者其它的 producer。ringBuffer.publish(sequence);}}}

  

3、消费者

package com.ljq.multi;import java.util.concurrent.atomic.AtomicInteger;import com.lmax.disruptor.WorkHandler;public class Consumer implements WorkHandler<Order>{private String consumerId;private static AtomicInteger count = new AtomicInteger(0);public Consumer(String consumerId){this.consumerId = consumerId;}@Overridepublic void onEvent(Order order) throws Exception {count.incrementAndGet();System.out.println("当前消费者: " + this.consumerId + ",消费信息:" + order.getId() + ",count:" + getCount());}public int getCount(){return count.get();}}

  

4、生产者消费者启动类

package com.ljq.multi;import java.util.UUID;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.Executors;
import java.util.concurrent.atomic.AtomicInteger;import com.lmax.disruptor.EventFactory;
import com.lmax.disruptor.ExceptionHandler;
import com.lmax.disruptor.RingBuffer;
import com.lmax.disruptor.SequenceBarrier;
import com.lmax.disruptor.WorkerPool;
import com.lmax.disruptor.YieldingWaitStrategy;
import com.lmax.disruptor.dsl.ProducerType;/*** 	disrunptor 多生产者多消费者*  * @author Administrator**/
public class Main {public static void main(String[] args) throws Exception {//创建ringBufferRingBuffer<Order> ringBuffer = RingBuffer.create(ProducerType.MULTI, new EventFactory<Order>() {  @Override  public Order newInstance() {  return new Order();  }  }, 1024 * 1024, new YieldingWaitStrategy());SequenceBarrier barriers = ringBuffer.newBarrier();//创建3个消费者消费订单数据Consumer[] consumers = new Consumer[3];for(int i = 0; i < consumers.length; i++){consumers[i] = new Consumer("c" + i);}WorkerPool<Order> workerPool = new WorkerPool<Order>(ringBuffer, barriers, new IntEventExceptionHandler(),consumers);ringBuffer.addGatingSequences(workerPool.getWorkerSequences());  workerPool.start(Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors()));  final AtomicInteger count = new AtomicInteger(0);final CountDownLatch latch = new CountDownLatch(1);//100个生产者for (int i = 0; i < 100; i++) {  final Producer p = new Producer(ringBuffer); new Thread(new Runnable() {@Overridepublic void run() {try {System.out.println(count.incrementAndGet());latch.await(); //等待,直到100个生产者创建完成,再一起生产消费订单数据} catch (InterruptedException e) {e.printStackTrace();}//每个生产者生产100条订单for(int j = 0; j < 100; j ++){p.onData(UUID.randomUUID().toString());}}}).start();} System.out.println("---------------开始生产-----------------");latch.countDown(); //生产者全部创建完毕,开始生产订单}static class IntEventExceptionHandler implements ExceptionHandler {  public void handleEventException(Throwable ex, long sequence, Object event) {}  public void handleOnStartException(Throwable ex) {}  public void handleOnShutdownException(Throwable ex) {}  } 
}

  

转载于:https://www.cnblogs.com/linjiqin/p/7468755.html

http://www.jmfq.cn/news/4833595.html

相关文章:

  • 购物网站开发毕业论文/郴州网站建设推广公司
  • 雅昌网站做古董交易/制作企业网站的公司
  • 做购物网站收费标准/品牌推广方案案例
  • 关于政府网站建设请示卡/郑州网站seo
  • wordpress后台网址/清远网站seo
  • 网站建设流/百度网页版 入口
  • 蒙牛官网网站怎么做的/阿里指数查询官网
  • 网上做兼职正规网站/廊坊百度关键词优化怎么做
  • 深圳b2b2c网站建设/免费友情链接网页
  • 网站正在建设中的代码/app推广好做吗
  • 广州制作网站公司/试分析网站推广和优化的原因
  • wordpress建2个网站吗/无锡seo公司哪家好
  • 域名注册 网站建设 好做吗/网站更换服务器对seo的影响
  • 做网站用什么工具/网站top排行榜
  • linux系统搭建网站/游戏推广赚钱
  • 一区适合晚上一个人看b站/网站推广计划方案
  • 企业网站建设存在的不足/sem推广外包
  • 天津外贸公司网站制作/seo快速提升排名
  • 做一名优秀网站设计师计划/seo搜索引擎优化技术教程
  • 珠海网站开发/网站查询ip
  • 登记注册身份验证app下载/网站seo视频狼雨seo教程
  • 网站做博彩客服怎么样/怎么做网页设计的页面
  • 国家企业信用信息公示官网糸 /株洲seo优化首选
  • 乌克兰网站后缀/上海网站建设联系方式
  • 天津网站制作/关键词优化流程
  • 编程软件做网站的/百度提交入口网址是什么
  • 上海市企业服务云网站/百度之家
  • 动漫制作专业必须会画画吗/佛山seo优化外包
  • 网站建设厘金手指下拉15/宁德市政府
  • 西安优化官网公司/在线seo短视频