查看原文
其他

【原创】Java并发编程系列01 | 开篇获奖感言

何适 java进阶架构师 2022-04-29

全网都是复制粘贴的文章,师长这里一直坚持输出原创

点击上方“java进阶架构师”,选择右上角“置顶公众号

不要错过每一天的原创!

为什么要学并发编程

我曾听一个从事15年开发工作的技术人员说过,他刚工作时的并发编程第一原则就是不要写并发程序。这个不写并发程序的原则行的通的背景是那个时候基本都是单核处理器,系统并发量很低,借助数据库和类似Tomcat这种中间件就可以解决并发问题。

如今硬件的驱动和互联网行业的飞速发展,64核的处理器已经是很常见了,大型互联厂商的系统并发量轻松过百万,传统的中间件和数据库肯定是不能帮我们遮风避雨了,我们只能通过并发编程来解决这些问题。

所以,并发编程已经成为一项必备技能

并发编程是Java语言的重要特性之一,它能使复杂的代码变得更简单,从而极大的简化复杂系统的开发。

并发编程可以充分发挥多处理器系统的强大计算能力,随着处理器数量的持续增长,如何高效的并发变得越来越重要。

说白了,对我们程序员来说,并发编程在日常工作中是都要用到的,就算目前没用到将来也要用到,工作中用不到面试也要用到。

如何学习并发编程

并发编程的学习确实有难度

《Java并发编程实战》中这么说,“编写正确的程序难,编写正确的并发程序更难”。

并发编程中涉及操作系统、CPU、内存等等多方面的知识,如果某一块知识缺乏,理解起来自然会有困难。由于涉及知识较多,学习起来很容易摸不着头绪,学习了一个点但是不能跟其他点联系起来。

理清脉络,系统学习

并发编程的知识比较零散,相关度很低,总是给人一种感觉,“学习了很多相关知识,可还是没搞懂是怎么回事”。那么,接下来就由我跟你一起来理一理Java并发编程的脉络。

1.并发理论:并发编程要解决的三大问题;介绍可见性与有序性问题的根源重排序;学习Java内存模型(JMM),理解JMM如何解决这些问题以实现并发编程的。

2.并发关键字:深入volatile、synchronized、final关键字的作用,都解决了什么问题,以及其实现原理。

3.并发基础:并发编程中用到的一些基本概念,如:死锁、饥饿与公平等;线程的创建、运行、调度。

4.CAS原子操作:并发编程的基础与核心CAS的实现原理,以及Java中的CAS原子操作。

5.Lock体系:JDK的Lock对于synchronized有哪些优势;Lock如何通过AQS与LockSupport工具实现的;Lock的使用。

6.并发工具:介绍java.util.concurrent包下提供的并发工具倒计时器CountDownLatch、循环栅栏CyclicBarrier、资源访问控制Semaphore、数据交换Exchanger的用法,并深入分析实现原理。

7.并发容器:介绍java.util.concurrent包下提供的并发容器ConcurrentHashMap、CopyOnWriteArrayList、ConcurrentLinkedQueue、ThreadLocal、及阻塞队列的用法,并深入分析实现原理。

8.线程池(Executor体系):介绍线程池ThreadPoolExecutor和ScheduledThreadPoolExecutor的用法,分析线程池执行流程和原理。

Java并发编程思维导图

从今天起,我会通过一个专题的系列文章来系统的讲解Java并发编程知识。如下给出Java并发编程的知识结构,也是这个系列文章的思路。

————  e n d ————


微服务、高并发、JVM调优、面试专栏等20大进阶架构师专题请关注公众号Java进阶架构师后在菜单栏查看

看到这里,说明你喜欢本文

你的转发,是对我最大的鼓励!在看亦是支持

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

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