摘要:在helloWorld的实例中,我们创建Disruptor实例,然后调用getRingBuffer方法去获取RingBuffer,其实在很多时候,我们可以直接使用RingBuffer,以及其他的API操作。我们一起熟悉下示例: 使用EventProcessor消息处理器。 BatchEventPro
阅读全文
摘要:小故事:Disruptor说的是生产者和消费者的故事. 有一个数组.生产者往里面扔芝麻.消费者从里面捡芝麻. 但是扔芝麻和捡芝麻也要考虑速度的问题. 1 消费者捡的比扔的快 那么消费者要停下来.生产者扔了新的芝麻,然后消费者继续. 2 数组的长度是有限的,生产者到末尾的时候会再从数组的开始位置继续.
阅读全文
摘要:Disruptor是一个高性能的异步处理框架,或者可以认为是最快的消息框架(轻量的JMS),也可以认为是一个观察者模式的实现,或者事件监听模式的实现。 在使用之前,首先说明disruptor主要功能加以说明,你可以理解为他是一种高效的"生产者-消费者"模型。也就性能远远高于传统的BlockingQu
阅读全文
摘要:我们来看程序的代码: 程序运行的结果是: t3线程进行初始化操作...t2线程进行初始化操作...t2线程初始化完毕,通知t1线程继续...t3线程初始化完毕,通知t1线程继续...t1线程继续执行... t1线程只有等t2和t3线程初始化完成之后才能执行..... 程序的运行结果是: lisi 准
阅读全文
摘要:我们来看下面程序的代码:经典的生产者消费者来实现 程序的运行结果是: 当前线程:pool-1-thread-2, 获取了数据,id为:1, 进行装载到公共缓冲区中...当前线程:pool-1-thread-1, 获取了数据,id为:2, 进行装载到公共缓冲区中...当前线程:pool-1-threa
阅读全文
摘要:Master-Worker模式是常用的并行模式之一,它的核心思想是,系统有两个进程协作工作:Master进程,负责接收和分配任务;Worker进程,负责处理子任务。当Worker进程将子任务处理完成后,结果返回给Master进程,由Master进程做归纳汇总,最后得到最终的结果。一、什么是Maste
阅读全文
摘要:多线程开发可以更好的发挥多核cpu性能,常用的多线程设计模式有:Future、Master-Worker、Guard Susperionsion 一、什么是Future模型: 该模型是将异步请求和代理模式联合的模型产物。类似商品订单模型。见下图: 客户端发送一个长时间的请求,服务端不需等待该数据处理
阅读全文
摘要:在学习Java 多线程并发开发过程中,了解到DelayQueue类的主要作用:是一个无界的BlockingQueue,用于放置实现了Delayed接口的对象,其中的对象只能在其到期时才能从队列中取走。这种队列是有序的,即队头对象的延迟到期时间最长。注意:不能将null元素放置到这种队列中。 Dela
阅读全文
摘要:PriorityBlockingQueue是一个基于优先级堆的无界的并发安全的优先级队列(FIFO),队列的元素按照其自然顺序进行排序,或者根据构造队列时提供的 Comparator 进行排序,具体取决于所使用的构造方法。 实现原理 PriorityBlockingQueue通过使用堆这种数据结构实
阅读全文
摘要:生产者和消费者不能同时进行,这里要注意没有实现读写分离,是有界的阻塞的队列,可以用来实现生产者和消费者模式 我们来看下面的代码: 程序运行的结果是: Exception in thread "main" java.lang.IllegalStateException: Queue full at j
阅读全文
摘要:同步类容器 上面代码是正确的,能够保证10个线程线程安全的卖票 容器使用的是vector容器,内部使用的synchronize来实现线程安全 vector的add方法 上面的这些方法可以让非线程安全的集合变成线程安全的集合 hashtable和vector都是使用传统的synchronized来实现
阅读全文
摘要:使用wait和notify 模拟一个ArrayBlockingQueue 当调用put方法存储元素的时候,如果当前队列已经满了线程阻塞,当使用take获得当前队列的第一个元素的时候,如果队列为null线程阻塞 我们来看看下面的代码: 上面代码有几个地方需要注意: 第一因为是多线程操作 所以容器大小的
阅读全文
摘要:1、wait和notify 注意下面的几点: wait和notify是Object类的常用的方法 wait要释放锁对象 notify不释放锁对象 下面实现这样一个功能: 开启两个线程一个线程向一个list集合中添加元素 另外一个线程如果监听到第一个线程添加元素的编号是5,就退出该线程 如何实现了,我
阅读全文