lenmom

博客园 首页 新随笔 联系 订阅 管理

2019年12月10日 #

摘要: 1. 什么是阻塞队列? 阻塞队列(BlockingQueue)是一个支持两个附加操作的队列。这两个附加的操作是:在队列为空时,获取元素的线程会等待队列变为非空。当队列满时,存储元素的线程会等待队列可用。阻塞队列常用于生产者和消费者的场景,生产者是往队列里添加元素的线程,消费者是从队列里拿元素的线程。 阅读全文
posted @ 2019-12-10 18:25 老董 阅读(817) 评论(0) 推荐(0) 编辑

摘要: 阻塞队列与普通的队列(LinkedList/ArrayList)相比,支持在向队列中添加元素时,队列的长度已满阻塞当前添加线程,直到队列未满或者等待超时;从队列中获取元素时,队列中元素为空 ,会将获取元素的线程阻塞,直到队列中存在元素 或者等待超时。 在JUC包中常用的阻塞队列包含ArrayBloc 阅读全文
posted @ 2019-12-10 18:24 老董 阅读(754) 评论(0) 推荐(0) 编辑

摘要: ConcurrentLinkedQueue是非阻塞无界的,基于FIFO原则,线程安全的队列,新节点的插入都是在队列的尾部插入的(tail节点),该队列适合于多个线程共享同一个集合时使用。 结构: 构造函数 offer插入 add插入 poll出队列 peek出队列 size操作 remove操作 c 阅读全文
posted @ 2019-12-10 18:21 老董 阅读(445) 评论(0) 推荐(0) 编辑

摘要: 使用线程池的好处 引用自 http://ifeve.com/java-threadpool/ 的说明: 降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。 提高响应速度。当任务到达时,任务可以不需要的等到线程创建就能立即执行。 提高线程的可管理性。线程是稀缺资源,如果无限制的创建, 阅读全文
posted @ 2019-12-10 18:19 老董 阅读(1176) 评论(0) 推荐(0) 编辑

摘要: HashMap,开发中最常用的数据结构之一,由数组加链表组成,以key-->value键值对形式存在,HashMap的结构如下: HashMap类中有几个关键变量 HashMap中有两个重要的内部类,Node、TreeNode Node 代表HashMap中的普通节点(未转化为红黑树之前,在jdk1 阅读全文
posted @ 2019-12-10 18:16 老董 阅读(414) 评论(0) 推荐(0) 编辑

摘要: ReentrantReadWriteLock, 可重入读写锁, 包含读锁与写锁,具体结构如下图: ReentrantReadWriteLock包含了很多内部类,其中最核心的为Sync、ReadLock、WriteLock Sync内部类 sync内部类是AQS的实现类,实现了共享锁、独占锁的获取与释 阅读全文
posted @ 2019-12-10 18:15 老董 阅读(530) 评论(0) 推荐(0) 编辑

摘要: AQS, 即AbstractQueuedSynchronizer,一个基于FIFO的队列同步器,是实现lock的基础,AQS是一个抽象类,继承了AbstractOwnableSynchronizer抽象类,其总体结构如下: 包含内部类Node ,ConditionObject。 AQS的结构 AQS 阅读全文
posted @ 2019-12-10 18:13 老董 阅读(413) 评论(0) 推荐(0) 编辑