正文内容加载中...
posted @ 2018-11-15 07:17 knock_小新 阅读(216) 评论(0) 编辑
摘要: 引言 在日常开发中,线程池是使用非常频繁的一种技术,无论是服务端多线程接收用户请求,还是客户端多线程处理数据,都会用到线程池技术,那么全面的了解线程池的使用、背后的实现原理以及合理的优化线程池的大小等都是非常有必要的。这篇文章会通过对一系列的问题的解答来讲解线程池的基本功能以及背后的原理,希望能对阅读全文
posted @ 2018-11-09 07:30 knock_小新 阅读(297) 评论(1) 编辑
摘要: 引言 JDK中除了上文提到的各种并发容器,还提供了丰富的阻塞队列。阻塞队列统一实现了BlockingQueue接口,BlockingQueue接口在java.util包Queue接口的基础上提供了put(e)以及take()两个阻塞方法。他的主要使用场景就是多线程下的生产者消费者模式,生产者线阅读全文
posted @ 2018-10-25 23:50 knock_小新 阅读(242) 评论(0) 编辑
摘要: 引言 容器是Java基础类库中使用频率最高的一部分,Java集合包中提供了大量的容器类来帮组我们简化开发,我前面的文章中对Java集合包中的关键容器进行过一个系列的分析,但这些集合类都是非线程安全的,即在多线程的环境下,都需要其他额外的手段来保证数据的正确性,最简单的就是通过synchronized阅读全文
posted @ 2018-10-17 07:34 knock_小新 阅读(1669) 评论(2) 编辑
摘要: 在上一篇《你真的懂ReentrantReadWriteLock吗?》中我给大家留了一个引子,一个更高效同时可以避免写饥饿的读写锁 StampedLock。StampedLock实现了不仅多个读不互相阻塞,同时在读操作时不会阻塞写操作。 为什么StampedLock这么神奇?能够达到这种效果,它的核心阅读全文
posted @ 2018-09-25 07:29 knock_小新 阅读(498) 评论(0) 编辑
摘要: 引言 在前几篇文章中了解了ReentrantLock、Semaphore与CountDownLatch后,J.U.C包中基于AQS实现的并发工具类还剩一个比较重要的:读写锁ReentrantReadWriteLock。读写锁在Java面试过程中是一个经常性考的题目,他涉及到的知识点比较多,导致很多人阅读全文
posted @ 2018-09-17 08:01 knock_小新 阅读(304) 评论(0) 编辑
摘要: 引言 上一篇文章中详细分析了基于AQS的ReentrantLock原理,ReentrantLock通过AQS中的state变量0和1之间的转换代表了独占锁。那么可以思考一下,当state变量大于1时代表了什么?J.U.C中是否有基于AQS的这种实现呢?如果有,那他们都是怎么实现的呢?这些疑问通过详细阅读全文
posted @ 2018-08-30 07:30 knock_小新 阅读(250) 评论(0) 编辑
摘要: 引言 在 未优化之前,我们在编码中使用最多的同步工具类应该是 类, 拥有优化后 关键字的性能,又提供了更多的灵活性。相比 ,他在功能上更加强大,具有等待可中断,公平锁以及绑定多个条件等 不具备的功能,是我们开发过程中必须要重点掌握的一个关键并发类。 在JDK并发包中举足轻重,不仅是因为他本身的使用频阅读全文
posted @ 2018-08-13 10:05 knock_小新 阅读(301) 评论(0) 编辑
摘要: 引言 上一篇文章中我们说过,volatile通过lock指令保证了可见性、有序性以及“部分”原子性。但在大部分并发问题中,都需要保证操作的原子性,volatile并不具有该功能,这时就需要通过其他手段来达到线程安全的目的,在Java编程中,我们可以通过锁、synchronized关键字,以及CAS操阅读全文
posted @ 2018-08-01 11:24 knock_小新 阅读(689) 评论(0) 编辑
摘要: 引言 谈到volatile关键字,大多数开发者都有一定了解,可以说是开发者非常熟悉,深入之后又非常陌生的一个关键字。相当于轻量的synchronized,也叫轻量级锁,与synchronized相比性能上开销较少,同时又具备了可见性、有序性以及部分原子性,是Java并发需中非常重要的一个关键字。这篇阅读全文
posted @ 2018-07-26 00:17 knock_小新 阅读(140) 评论(0) 编辑
博聚网