并发编程
文章平均质量分 91
yanghzaini
这个作者很懒,什么都没留下…
展开
-
java多线程Master-worker模式
Master-Worker模式是常用的并行计算模式。它的核心思想是系统由两类进程协作工作:Master进程和Worker进程。Master负责接收和分配任务,Worker负责处理子任务。当各个Worker子进程处理完成后,会将结果返回给Master,由Master做归纳和总结。其好处是能将一个大任务分解成若干个小任务,并行执行,从而提高系统的吞吐量。主要模块分为:Master:中控调度...原创 2018-11-15 15:41:22 · 233 阅读 · 0 评论 -
JAVA 多线程(生产者和消费者模式)
在生产-消费模式中:通常由两类线程,即若干个生产者的线程和若干个消费者的线程。生产者线程负责提交用户请求,消费者线程则负责具体处理生产者提交的任务,在生产者和消费者之间通过共享内存缓存区进行通信。主要构成:provider:生产者线程负责生产数据consumer:消费者线程负责消费生产的数据示例:provider类:生产者/** * 生产者 * @author...原创 2018-11-15 17:53:43 · 12282 阅读 · 0 评论 -
java多线程容器ConcurrentMap与CopyOnWrite
一、ConcurrentMap接口下有两个重要的实现:ConCurrentHashMapConcurrentSkipListMap(支持并发排序功能,弥补ConcurrentHashMap)ConcurrentHashMap内部使用段(Segment)来表示这些不同的部分,每个段其实就是一个小的HashTable,它们有自己的锁。只要多个修改操作发生在不同的段上,它们就可以并发进行。把...原创 2018-11-12 11:12:15 · 296 阅读 · 0 评论 -
并发Queue(ConcurrentLinkedQueue和BlockingQueue)
在并发队列上JDK提供了两套实现,一个是以ConcurrentLinkedQueue为代表的高性能队列,一个是以BlockingQueue接口为代表的阻塞队列,无论哪种都继承自Queue一、ConCurrentLinkedQueue:是一个适用于高并发场景下的队列,通过无锁的方式,实现了高并发状态下的高性能,通常ConcurrentLinkedQueue性能好于BlockingQueu...原创 2018-11-12 14:28:32 · 568 阅读 · 0 评论 -
JAVA 多线程Future模式
Future模式有点类似于商品订单。比如在网购时,当看重某一件商品时,就可以提交订单,当订单处理完成后,在家里等待商品送货上门即可。或者说更形象的我们发送Ajax请求的时候,页面是异步的进行后台处理,用户无须一直等待请求的结果,可以继续浏览或操作其他内容。 Future模式的主要角色有:Main:系统启动,调用FutureClient发出请求FutureClient:返回Dat...原创 2018-11-14 14:31:47 · 260 阅读 · 0 评论 -
JAVA Executor框架创建线程池
为了更好的控制多线程,JDK提供理论一套线程框架Executor,帮助开发人员有效的进行线程控制。它们都在java.util.concurrent包中,是JDK并发包的核心。其中有一个比较重要的类:Executors,他扮演着线程工厂的角色,我们通过Executors可以创建特定功能的线程池。Executors创建线程池的四种方式: ExecutorService pool1=Execut...原创 2018-11-16 17:18:52 · 991 阅读 · 0 评论 -
JAVA Concurrent.util工具类的使用
一、CyclicBarrier的使用:假设有只有的一个场景:每个线程代表一个跑步运动员,当运动员都准备好后,才一起出发,只要有一个没有准备好,大家都等待。CyclicBarrier示例:public class UseCyclicBarrier { public static void main(String[] args) {//参数表示3个线程一起准备OK继续执行,少一个线程所有线...原创 2018-11-19 22:10:41 · 460 阅读 · 0 评论 -
JAVA多线程 重入锁和读写锁
在java多线程中,我们真的可以使用synchronized关键字来实现线程间的同步互斥工作,那么其实还有一个更优秀的机制去完成这个“同步互斥”工作,他就是Lock对象,重入锁和读写锁。他们具有比synchronized更为强大的功能,并且有嗅探锁定、多路分支等功能。一、重入锁在需要进行同步的代码部分加上锁定,但不要忘记最后一定要释放锁定,不然会造成锁永远无法释放,其他线程永远进不来的结果。...原创 2018-11-19 23:54:09 · 347 阅读 · 0 评论 -
Disruptor 学习
Martin Fowler在自己网站上写了一篇LMAX架构的文章,在文章中他介绍了LMAX是一种新型零售金融交易平台,它能够以很低的延迟产生大量交易。这个系统是建立在JVM平台上,其核心是一个业务逻辑处理器,它能够在一个线程里每秒处理6百万订单。业务逻辑处理器完全是运行在内存中,使用事件源驱动方式。业务逻辑处理器的核心是Disruptor。Disruptor它是一个开源的并发框架,并获得2011...原创 2018-11-20 14:00:16 · 238 阅读 · 0 评论