考虑这样一个饭店,它有一个厨师(Chef)和一个服务员(Waiter)。这个服务员必须等待厨师准备好菜品。当厨师准备好时,他会通知服务员,之后服务员上菜,然后返回继续等待。这是一个任务协作的示例:厨师...
分类:
编程语言 时间:
2015-10-10 15:43:41
阅读次数:
252
1.redis介绍Redis是一个开源的使用ANSIC语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。2.阻塞队列使用非阻塞队列的时候有一个很大问题就是:它不会对当前线程产生阻塞,那么在面对类似消费者-生产者的模型时,就必须额外地实现同步策略以及线...
分类:
其他好文 时间:
2015-10-09 21:22:44
阅读次数:
322
import?java.util.concurrent.locks.Condition;
import?java.util.concurrent.locks.Lock;
import?java.util.concurrent.locks.ReentrantLock;
public?class?ProductQueue<T>?{
????private?final?...
分类:
其他好文 时间:
2015-10-09 12:31:18
阅读次数:
240
RabbitMQ要实现HelloWorld,其实也很简单。只需一个服务器来发送消息,另外有个客户端接收消息即可。整体的设计流程如下:消息生产者发送Hello到消息队列,消息消费者从队列中接收消息。下载依赖Jar包RabbitMQ要用Java实现发送消息,就必须使用Java客户端库。目前RabbizMQ的Jav..
分类:
编程语言 时间:
2015-10-09 00:50:13
阅读次数:
305
RabbitMQ消息模型的核心思想是生产者不会将消息直接发送给队列。生产者通常不知道消息将会被哪些消费者接收,按照刚开始里介绍的rabbitMQ中所画的,生产者不是直接将消息发送给Queue么认识会交给Exchange,所以需要定义Exchange的消息分发模型来实现消息的分发,即发布者/订阅者模式...
分类:
其他好文 时间:
2015-10-06 12:54:32
阅读次数:
239
Queue是什么队列,是一种数据结构。除了优先级队列和LIFO队列外,队列都是以FIFO(先进先出)的方式对各个元素进行排序的。无论使用哪种排序方式,队列的头都是调用remove()或poll()移除元素的。在FIFO队列中,所有新元素都插入队列的末尾。Queue中的方法Queue中的方法不难理解,...
分类:
编程语言 时间:
2015-10-05 16:51:10
阅读次数:
265
首先,先来看几个概念:同步:协作的过程,比如,多人开发合作。相互排斥:争抢资源的过程。比如苦逼的大学选课;临界区:进程中对临界资源实施操作的那段程序;临界资源:一次仅仅能一个进程使用的资源,比如打印机;信号量:表示资源数量;相对于各个进程来说的;P操作(-1):申请资源;V操作(+1):释放资源; ...
分类:
其他好文 时间:
2015-10-04 08:51:19
阅读次数:
224
生产者消费者模型当中有三个实体,他们分别是:生产者消费者缓冲队列缓冲队列要求:1.当缓冲队列为空时,不能往外取2.当缓冲队列为满时,不能继续往里添加对于缓冲队列的选择,可以选择线程安全的和线程非安全的.线程安全的类,指的是类内共享的全局变量的访问必须保证是不受多线程形式影响的。如果由于多线程的访问(...
分类:
其他好文 时间:
2015-09-26 12:02:26
阅读次数:
162
producer把消息发送到消息块,consumer从块读取消息。 安装: Install-Package Microsoft.Tpl.Dataflow using System.Threading.Tasks.Dataflow; 解释: Produce方法随机生成字节,并Post到ITargetB...
分类:
其他好文 时间:
2015-09-25 13:09:48
阅读次数:
287
RabbitMQ是一个在AMQP基础上完整的,可复用的企业消息系统。它可以用于大型软件系统各个模块之间的高效通信,支持高并发,支持可扩展。前提是你的RabbitMq服务已搭建好,制作一个winform窗体如图入队列(生产者): ServerAddress = this.ServerAddress.T...
分类:
其他好文 时间:
2015-09-23 19:20:40
阅读次数:
191