ThreadPoolExecutor是Executor运行框架最重要的一个实现类。提供了线程池管理和任务管理是两个最主要的能力。这篇通过分析ThreadPoolExecutor的源代码来看看怎样设计和实现一个基于生产者消费者模型的运行器。 生产者消费者模型 生产者消费者模型包括三个角色:生产者,工作 ...
分类:
编程语言 时间:
2017-05-15 19:52:41
阅读次数:
249
一、什么是生产者消费者模型?生产者就是生产数据的线程,消费者指的就是消费数据的线程。在多线程开发过程中,生产者的速度比消费者的速度快,那么生产者就必须等待消费者把数据处理完,生产者才会产生新的数据,相对的,如果消费者处理数据的速度大于生产者,那么消费者就必..
分类:
编程语言 时间:
2017-05-14 21:58:21
阅读次数:
202
转 https://www.oschina.net/code/snippet_111708_25438 这个问题挺经典,我这个解法的本质在于将问题抽象为生产者消费者模型,但是是一个特殊的生产者消费者模型,有两点要求:1、缓冲区大小为1(用一个布尔变量表示就可以了)2、缓冲区初始为空再具体点可以将其想 ...
分类:
编程语言 时间:
2017-05-13 19:12:21
阅读次数:
236
在JDK的多线程与并发库一文中, 提到了BlockingQueue实现了生产者-消费者模型 BlockingQueue是基于锁实现的, 而锁的效率通常较低. 有没有使用CAS机制实现的生产者-消费者? Disruptor就是这样. disruptor使用观察者模式, 主动将消息发送给消费者, 而不是 ...
分类:
其他好文 时间:
2017-05-01 09:55:47
阅读次数:
267
并行设计模式属于设计优化的一部分,它是对一些常用的多线程结构的总结和抽象。与串行程序相比,并行结构的程序通常更为复杂。因此合理的使用并行模式在多线程开发中更具有意义,在这里主要介绍future、master-woeker和生产者-消费者模型。 future模式有点类似于商品订单。比如在网购时,当看中 ...
分类:
编程语言 时间:
2017-04-24 12:12:30
阅读次数:
352
不管你是新程序员还是老手,你一定在面试中遇到过有关线程的问题。Java 语言一个重要的特点就是内置了对并发的支持,让 Java 大受企业和程序员的欢迎。大多数待遇丰厚的 Java 开发职位都要求开发者精通多线程技术并且有丰富的 Java 程序开发、调试、优化经验,所以线程相关的问题在面试中经常会被提 ...
分类:
编程语言 时间:
2017-04-17 09:45:55
阅读次数:
247
本节内容 操作系统发展史介绍 进程、与线程区别 python GIL全局解释器锁 线程 语法 join 线程锁之Lock\Rlock\信号量 将线程变为守护进程 Event事件 queue队列 生产者消费者模型 Queue队列 开发一个线程池 进程 语法 进程间通讯 进程池 操作系统发展史 手工操作 ...
分类:
编程语言 时间:
2017-04-15 19:04:32
阅读次数:
541
Java并发编程:线程间协作的两种方式:wait、notify、notifyAll和Condition 在前面我们将了很多关于同步的问题,然而在现实中,需要线程之间的协作。比如说最经典的生产者-消费者模型:当队列满时,生产者需要等待队列有空间才能继续往里面放入商品,而在等待的期间内,生产者必须释放对 ...
分类:
编程语言 时间:
2017-03-29 21:12:12
阅读次数:
250
什么是生产者/消费者模型一种重要的模型,基于等待/通知机制。生产者/消费者模型描述的是有一块缓冲区作为仓库,生产者可将产品放入仓库,消费者可以从仓库中取出产品,生产者/消费者模型关注的是以下几个点:1、生产者生产的时候消费者不能消费2、消费者消费的时候生产者不能生产3、缓冲区空时消费者不能消费4、缓... ...
分类:
编程语言 时间:
2017-03-23 18:49:20
阅读次数:
301