![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
并发
文章平均质量分 74
aoxida
这个作者很懒,什么都没留下…
展开
-
Redis缓存穿透,缓存击穿,缓存雪崩
缓存穿透key对应的缓存不存在,此时程序会触发读取数据源,如果并发量较大,可能会持续亚到DB。解决方案:如果发现数据库不存在记录,可以把空结果缓存到Redis,这样就减少了DB的压力。缓存击穿 key对应的缓存已过期,此时如果大量并发请求,系统发现缓存过期,会重新从DB中加载数据到Redis,此时可能会瞬间把DB压垮。(感觉这个挺极端的场景????)解决方案:方案1:从DB中加载缓存的时候,使用分布式锁,只允许一个线程加载缓存; ...原创 2021-07-16 16:35:39 · 112 阅读 · 0 评论 -
分布式锁
现在面试都会聊聊分布式系统,通常面试官都会从服务框架(Spring Cloud、Dubbo),一路聊到分布式事务、分布式锁、ZooKeeper等知识。今天就来聊聊分布式锁这块的知识,先具体的来看看Redis分布式锁的实现原理。如果在公司里落地生产环境用分布式锁的时候,一定是会用开源类库的,比如Redis分布式锁,一般就是用Redisson框架就好了,非常的简便易用。感兴趣可以去Redisson官网看看如何在项目中引入Redisson的依赖,然后基于Redis实现分布式锁的加锁与释放锁。一段简单的使用转载 2021-04-16 18:16:27 · 17394 阅读 · 4 评论 -
公平锁与非公平锁
公平锁:多个线程按照申请锁的顺序去获得锁,线程会直接进入队列去排队,永远都是队列的第一位才能得到锁。优点:所有的线程都能得到资源,不会饿死在队列中。缺点:吞吐量会下降很多,队列里面除了第一个线程,其他的线程都会阻塞,cpu唤醒阻塞线程的开销会很大。非公平锁:多个线程去获取锁的时候,会直接去尝试获取,获取不到,再去进入等待队列,如果能获取到,就直接获取到锁。优点:可以减少CPU唤醒线程的开销,整体的吞吐效率会高点,CPU也不必取唤醒所有线程,会减少唤起线程的数量。缺点:你们可能也发现了..转载 2021-01-15 10:33:56 · 161 阅读 · 0 评论 -
CountDownLatch用法详解
概念CountDownLatch是一个同步工具类,它允许一个或多个线程一直等待,直到其他线程执行完后再执行。例如,应用程序的主线程希望在负责启动框架服务的线程已经启动所有框架服务之后执行。CountDownLatch的用法CountDownLatch典型用法1:某一线程在开始运行前等待n个线程执行完毕。将CountDownLatch的计数器初始化为nnew CountDownLatch(n),每当一个任务线程执行完毕,就将计数器减1countdownlatch.countDown(),当计...转载 2020-05-15 10:47:23 · 836 阅读 · 0 评论 -
Java高并发书籍推荐
1.Java并发编程实战 (java并发的圣经)2.多处理器编程的艺术(并发编程的各种算法,java实现,有点难度)3.并发的艺术 (多核处理器的共享内存模型中的各种算法)4.Java虚拟机并发编程 (jvm平台上各种语言的并发比较,如java,scala,clojure)5.Java并发编程的艺术6.Java 7并发编程实战手册 (java中的并发编程实践,属于API工具书,...转载 2020-05-04 01:45:39 · 5898 阅读 · 1 评论