前言: 在新增的Concurrent包中,BlockingQueue很好的解决了多线程中,如何高效安全“传输”数据的问题。通过这些高效并且线程安全的队列类,为我们快速搭建高质量的多线程程序带来极大的便利。本文详细介绍了BlockingQueue家庭中的所有成员,包括他们各自的功能以及常见使用场景。 ...
分类:
其他好文 时间:
2017-09-29 21:12:52
阅读次数:
205
注意:该随笔内容完全引自http://wsmajunfeng.iteye.com/blog/1629354,写的很好,非常感谢,复制过来算是个积累,怕以后找不到。 一. 前言 在新增的Concurrent包中,BlockingQueue很好的解决了多线程中,如何高效安全“传输”数据的问题。通过这些高 ...
分类:
其他好文 时间:
2017-09-28 16:51:21
阅读次数:
184
阻塞场景 BlockingQueue阻塞队列,阻塞的情况主要有如下2种: 1. 当队列满了,进行入队操作阻塞 2. 当队列空了,进行出队操作阻塞 阻塞队列主要用在生产者/消费者模式中,下图展示了一个线程生产,一个线程消费的场景: BlockingQueue接口 1. 抛出异常:如果操作不能马上进行, ...
分类:
编程语言 时间:
2017-09-23 15:23:37
阅读次数:
267
一、集合 (1)集合接口 Collection -List -Queue -Set Map (2)Collections工具类 二、List (1)ArrayList 默认容量为10,1.5倍增长,线程不安全 (2)LinkedList 双向链表实现,线程不安全 (3)CopyAndWriteArr ...
分类:
编程语言 时间:
2017-09-17 23:31:29
阅读次数:
257
转载请注明源出处:http://www.cnblogs.com/lighten/p/7510799.html 1.前言 本章介绍阻塞队列PriorityBlockingQueue。这是一个无界有序的阻塞队列,排序规则和之前介绍的PriorityQueue一致,只是增加了阻塞操作。同样的该队列不支持插 ...
分类:
编程语言 时间:
2017-09-13 11:13:19
阅读次数:
162
1. 什么是阻塞队列? 阻塞队列(BlockingQueue)是一个支持两个附加操作的队列。这两个附加的操作是:在队列为空时,获取元素的线程会等待队列变为非空。当队列满时,存储元素的线程会等待队列可用。阻塞队列常用于生产者和消费者的场景,生产者是往队列里添加元素的线程,消费者是从队列里拿元素的线程。 ...
分类:
编程语言 时间:
2017-09-12 12:03:47
阅读次数:
252
实现了一个简化版的线程池。 实现线程池的关键有两个:一是阻塞队列,用于任务的存取,二是内部的线程对象如何持续性的执行任务,并在空闲时被回收。 线程池代码: 测试代码: 虽然是继承了ExecutorService对象,但是只实现了几个接口,设计上也可能有未考虑到的问题。 测试代码也很简陋,仅供参考。 ...
分类:
编程语言 时间:
2017-09-12 10:00:27
阅读次数:
269
转载请注明源出处:http://www.cnblogs.com/lighten/p/7505355.html 1.前言 本章介绍无界的阻塞队列LinkedTransferQueue,JDK7才提供了这个类,所以这个类具备了一些一般队列不具有的特性。此队列也是基于链表的,对于所有给定的生产者都是先入先 ...
分类:
编程语言 时间:
2017-09-11 18:18:33
阅读次数:
183
Java线程的同步(七中方法):同步方法同步代码块wait和notify方法使用特殊域变量(volatile)使用重入锁使用ThreadLocal使用阻塞队列BlockingQueue使用原子变量实现线程同步AtomicInteger
分类:
编程语言 时间:
2017-09-09 23:18:44
阅读次数:
193
线程池的实现原理,这个知识点真的很重要,几乎每次面试都会被问到,一般的提问方式有如下几种: 1、“讲讲线程池的实现原理” 2、“线程池中的coreNum和maxNum有什么不同” 3、“在不同的业务场景中,线程池参数如何设置” 场景对话: 面试官:平时线程池用的多么? 我:嗯,我的*项目中就用到了。 ...
分类:
编程语言 时间:
2017-09-08 14:52:31
阅读次数:
225