查看原文
其他

【高并发】学好并发编程,需要掌握这些核心知识体系!!

冰河 冰河技术 2022-09-10

点击上方蓝色“冰河技术”,关注并选择“设为星标”

持之以恒,贵在坚持,每天进步一点点!



作者个人研发的在高并发场景下,提供的简单、稳定、可扩展的延迟消息队列框架,具有精准的定时任务和延迟队列处理功能。自开源半年多以来,已成功为十几家中小型企业提供了精准定时调度方案,经受住了生产环境的考验。为使更多童鞋受益,现给出开源框架地址:

https://github.com/sunshinelyz/mykit-delay

PS: 欢迎各位Star源码,也可以pr你牛逼哄哄的代码      

写在前面

很多小伙伴问我:我在大学时候就学习了多线程,工作后,自己也看过不少有关多线程和并发编程的书籍和视频,为啥真正到工作的时候,我还是不知道在项目中哪里会用到并发编程。我知道有关于并发编程的各个知识点,但是没办法将这些知识点串起来,形成知识体系。冰河,你能不能推一篇文章,讲讲如何学习并发编程,如何将并发编程的各个知识点串成知识体系呢?今天,我们就一起来探讨下有关于并发编程的核心知识体系。

有关更多并发编程的知识,小伙伴们可以到【高并发专题】进行系统学习。

并发编程的核心

我们先来看下并发编程的三大核心知识图。

核心问题

要想学好并发编程,首先要理解三个核心的问题:分工,同步和协作(《【高并发】要想学好并发编程,关键是要理解这三个核心问题》)。

诡异的问题

并发编程并不像普通业务中的CRUD那么简单,往往在并发编程中会出现各种各样诡异的Bug问题(《【高并发】导致并发编程频繁出问题的“幕后黑手”》),而且这些问题也不好复现。究其根本原因,是操作系统的CPU与内存和I/O存在速度差异,而操作系统和编译器在解决这些速度差异带来的问题时,又引入了可见性(《【高并发】解密导致诡异并发问题的第一个幕后黑手——可见性问题》)、原子性(《【高并发】解密导致并发问题的第二个幕后黑手——原子性问题》)、有序性(《【高并发】解密导致并发问题的第三个幕后黑手——有序性问题》)问题,而这三个核心问题,就是导致并发编程出现各种诡异Bug的根本所在。

如何解决问题

在Java中,如何解决并发编程中的可见性、原子性和有序性问题呢?在Java中提供了内存模型和互斥锁的方案来解决这些问题。在Java的内存模型中,有一个很重要的原则,那就是:Happens-Before原则(《何为Happens-Before原则?这次彻底懂了!》)。通过Java的内存模型,能够解决可见性和有序性问题(《【高并发】如何解决可见性和有序性问题?这次彻底懂了!》),对于如何解决原子性问题,我们使用的是互斥锁方案(《【高并发】如何使用互斥锁解决多线程的原子性问题?这次终于明白了!》)。

互斥锁带来的问题

互斥锁在是解决并发问题的核心方案,但是一不留神就会引起死锁(《【高并发】高并发环境下诡异的加锁问题(你加的锁未必安全)》、《【高并发】优化加锁方式时竟然死锁了!!》)

优化加锁方式

既然互斥锁会带来死锁的问题,那我们如何优化加锁的方式呢?(《【高并发】高并发场景下如何优化加锁方式?看完这篇我确实明白了!!》)

线程知识

线程的生命周期(《【高并发】线程的生命周期其实没有我们想象的那么简单!!》)、高并发场景下我们到底创建多少线程合适(《【高并发】高并发场景下创建多少线程才合适?一条公式帮你搞定!!》)?为什么局部变量就是线程安全的(《【高并发】终于弄懂为什么局部变量是线程安全的了!!》)?为什么很多小伙伴面试会栽在InterruptedException上(《【高并发】由InterruptedException异常引发的思考》)?我可以用Java中的面向对象的思想写好并发程序,你信吗(《【高并发】信不信?以面向对象的思想是可以写好高并发程序的!》)?

核心案例

秒杀系统架构解密(《【高并发】高并发秒杀系统架构解密,不是所有的秒杀都是秒杀!》)

分布式锁架构解密(《【高并发】高并发分布式锁架构解密,不是所有的锁都是分布式锁!!》)

分布式限流理论(《【高并发】如何实现亿级流量下的分布式限流?这些理论你必须掌握!!》)

分布式限流算法(《【高并发】如何实现亿级流量下的分布式限流?这些算法你必须掌握!!》)

实现HTTP接口限流(《【高并发】亿级流量场景下如何为HTTP接口限流?看完我懂了!!》)

实现分布式限流(《【高并发】亿级流量场景下如何实现分布式限流?看完我彻底懂了!!》)

更多内容

有关更多并发编程的知识,小伙伴们可以到【高并发专题】进行系统学习。

好了,今天就到这儿吧,我是冰河,我们下期见!

重磅福利

微信搜一搜【冰河技术】微信公众号,关注这个有深度的程序员,每天阅读超硬核技术干货,公众号内回复【PDF】有我准备的一线大厂面试资料和我原创的超硬核PDF技术文档,以及我为大家精心准备的多套简历模板(不断更新中),希望大家都能找到心仪的工作,学习是一条时而郁郁寡欢,时而开怀大笑的路,加油。如果你通过努力成功进入到了心仪的公司,一定不要懈怠放松,职场成长和新技术学习一样,不进则退。如果有幸我们江湖再见!

另外,我开源的各个PDF,后续我都会持续更新和维护,感谢大家长期以来对冰河的支持!!

写在最后

如果你觉得冰河写的还不错,请微信搜索并关注「 冰河技术 」微信公众号,跟冰河学习高并发、分布式、微服务、大数据、互联网和云原生技术,「 冰河技术 」微信公众号更新了大量技术专题,每一篇技术文章干货满满!不少读者已经通过阅读「 冰河技术 」微信公众号文章,吊打面试官,成功跳槽到大厂;也有不少读者实现了技术上的飞跃,成为公司的技术骨干!如果你也想像他们一样提升自己的能力,实现技术能力的飞跃,进大厂,升职加薪,那就关注「 冰河技术 」微信公众号吧,每天更新超硬核技术干货,让你对如何提升技术能力不再迷茫!

留言区

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存