上一页 1 2 3 4 5 6 7 8 ··· 19 下一页
摘要: 和 Mysql 主从复制的原因一样,Redis 虽然读取写入的速度都特别快,但是也会产生读压力特别大的情况。为了分担读压力,Redis 支持主从复制,Redis 的主从结构可以采用一主多从或者级联结构,Redis 主从复制可以根据是否是全量分为全量同步和增量同步。下图为级联结构。 全量同步Redis 阅读全文
posted @ 2020-11-30 10:57 looyee 阅读(87) 评论(0) 推荐(0)
摘要: 刚开始认识volatile的时候,觉得对它的一些特性非常迷惑。比如:具有可见性,如果一个线程修改了volatile变量的值,那么其它线程也会发现这一点;同时它又不具有原子性,多个线程对被volatile修饰的int 变量累加会造成相互覆盖。这我就迷糊了:不是一个线程修改了,其它的线程中数据都无效了么 阅读全文
posted @ 2020-11-30 10:05 looyee 阅读(86) 评论(0) 推荐(0)
摘要: 引言 在日常开发中,线程池是使用非常频繁的一种技术,无论是服务端多线程接收用户请求,还是客户端多线程处理数据,都会用到线程池技术,那么全面的了解线程池的使用、背后的实现原理以及合理的优化线程池的大小等都是非常有必要的。这篇文章会通过对一系列的问题的解答来讲解线程池的基本功能以及背后的原理,希望能对 阅读全文
posted @ 2020-11-28 15:24 looyee 阅读(195) 评论(0) 推荐(0)
摘要: 引言 JDK中除了上文提到的各种并发容器,还提供了丰富的阻塞队列。阻塞队列统一实现了BlockingQueue接口,BlockingQueue接口在java.util包Queue接口的基础上提供了put(e)以及take()两个阻塞方法。他的主要使用场景就是多线程下的生产者消费者模式,生产者线 阅读全文
posted @ 2020-11-28 15:23 looyee 阅读(216) 评论(0) 推荐(0)
摘要: 引言 容器是Java基础类库中使用频率最高的一部分,Java集合包中提供了大量的容器类来帮组我们简化开发,我前面的文章中对Java集合包中的关键容器进行过一个系列的分析,但这些集合类都是非线程安全的,即在多线程的环境下,都需要其他额外的手段来保证数据的正确性,最简单的就是通过synchronized 阅读全文
posted @ 2020-11-28 15:22 looyee 阅读(72) 评论(0) 推荐(0)
摘要: 在上一篇《你真的懂ReentrantReadWriteLock吗?》中我给大家留了一个引子,一个更高效同时可以避免写饥饿的读写锁 StampedLock。StampedLock实现了不仅多个读不互相阻塞,同时在读操作时不会阻塞写操作。 为什么StampedLock这么神奇?能够达到这种效果,它的核心 阅读全文
posted @ 2020-11-28 15:21 looyee 阅读(255) 评论(0) 推荐(0)
摘要: 引言 在前几篇文章中了解了ReentrantLock、Semaphore与CountDownLatch后,J.U.C包中基于AQS实现的并发工具类还剩一个比较重要的:读写锁ReentrantReadWriteLock。读写锁在Java面试过程中是一个经常性考的题目,他涉及到的知识点比较多,导致很多人 阅读全文
posted @ 2020-11-28 15:20 looyee 阅读(112) 评论(0) 推荐(0)
摘要: 引言 上一篇文章中详细分析了基于AQS的ReentrantLock原理,ReentrantLock通过AQS中的state变量0和1之间的转换代表了独占锁。那么可以思考一下,当state变量大于1时代表了什么?J.U.C中是否有基于AQS的这种实现呢?如果有,那他们都是怎么实现的呢?这些疑问通过详细 阅读全文
posted @ 2020-11-28 15:19 looyee 阅读(73) 评论(0) 推荐(0)
摘要: 引言 在synchronized未优化之前,我们在编码中使用最多的同步工具类应该是ReentrantLock类,ReentrantLock拥有优化后synchronized关键字的性能,又提供了更多的灵活性。相比synchronized,他在功能上更加强大,具有等待可中断,公平锁以及绑定多个条件等s 阅读全文
posted @ 2020-11-28 15:18 looyee 阅读(74) 评论(0) 推荐(0)
摘要: 引言 上一篇文章中我们说过,volatile通过lock指令保证了可见性、有序性以及“部分”原子性。但在大部分并发问题中,都需要保证操作的原子性,volatile并不具有该功能,这时就需要通过其他手段来达到线程安全的目的,在Java编程中,我们可以通过锁、synchronized关键字,以及CAS操 阅读全文
posted @ 2020-11-28 15:17 looyee 阅读(155) 评论(0) 推荐(0)
上一页 1 2 3 4 5 6 7 8 ··· 19 下一页