上篇我们讲了使用wait()和notify()使线程间实现合作,这种方式很直接也很灵活,但是使用之前需要获取对象的锁,notify()调用的次数如果小于等待线程的数量就会导致有的线程会一直等待下去。这篇我们讲多线程间接协作的方式,阻塞队列和管道通讯,间接协作的优点是使用起来更简单并且不易出错。 阻塞 ...
分类:
编程语言 时间:
2018-06-23 22:51:59
阅读次数:
195
阻塞队列 再写阻塞列队之前,我写了一篇有关queue集合相关博客,也主要是为这篇做铺垫的。 网址:【java提高】 queue集合 在这篇博客中我们接触的队列都是非阻塞队列,比如PriorityQueue、LinkedList(LinkedList是双向链表,它实现了Dequeue接口)。 使用非阻 ...
分类:
编程语言 时间:
2018-06-20 22:42:48
阅读次数:
254
DelayQueue 是一中阻塞队列,需要实现接口Delayed定义的方法.做下使用记录和心得吧, 源码部分:取值的逻辑相似 超时加排序机制 ...
分类:
其他好文 时间:
2018-06-17 19:05:42
阅读次数:
161
生产者消费者是通过一个容器来解决生产者和消费者的强耦合问题。生产者和消费者不直接通讯,而通过阻塞队列进行通信。阻塞队列就相当一个缓冲区,平衡了生产者和消费者的处理能力。 ...
分类:
编程语言 时间:
2018-06-14 11:32:30
阅读次数:
162
Java中阻塞队列接口BlockingQueue继承自Queue接口,并提供put、take阻塞方法。两个主要的阻塞类实现是ArrayBlockingQueue和LinkedBlockingQueue。阻塞队列的主要方法 一、ArrayBlockQueue的原理与实现 ArrayBlockingQu ...
分类:
数据库 时间:
2018-06-13 12:01:35
阅读次数:
217
见贤思齐焉,见不贤而内自省也。—《论语》PS: 如果觉得本文有用的话,请帮忙点赞,留言评论支持一下哦,您的支持是我最大的动力!谢谢啦~Java5.0 增加了两种新的容器类型,它们是指:Queue 和 BlockingQueue。Queue 用来临时保存一组等待处理的元素。BlockingQueue 扩张了 Queue 接口,增加了可阻塞的插入和获取等操作。BlockingQueue 通常运用于一个
分类:
编程语言 时间:
2018-06-07 10:24:31
阅读次数:
179
(1)wait() / notify()方法 (2)await() / signal()方法 (3)BlockingQueue阻塞队列方法 (4)PipedInputStream / PipedOutputStream 本文只介绍最常用的前三种,第四种暂不做讨论 第一种:BlockingQueue阻 ...
分类:
编程语言 时间:
2018-06-03 21:40:50
阅读次数:
178
Java设计模式之观察者模式 一直想写一篇学习观察者模式的总结没有契机,今天学习阻塞队列的原理时候看到在实现生产者消费者的时候用到了通知模式,就是所谓的观察者模式,正好顺便整理一下。 1. 简介 观察者模式定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被 ...
分类:
编程语言 时间:
2018-06-02 23:17:57
阅读次数:
191
各I/O模型优缺点 BIO通信模型 BIO主要的问题在于每当有一个新的客户端请求接入时,服务端必须创建一个新的线程处理新接入的客户端链路,一个线程只能处理一个客户端连接 线程池I/O编程 假如所有可用线程都被阻塞,后续I/O都将在队列中排队 线程池采用阻塞队列实现,队列积满之后,后续入队列操作将被阻 ...
分类:
编程语言 时间:
2018-05-29 18:54:55
阅读次数:
211
一、同步容器 主要代表有Vector和Hashtable,以及Collections.synchronizedXxx等。 锁的粒度为当前对象整体。 迭代器是及时失败的,即在迭代的过程中发现被修改,就会抛出ConcurrentModificationException。 二、并发容器 主要代表有Con ...
分类:
其他好文 时间:
2018-05-25 13:39:03
阅读次数:
145