欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

【原创】Java并发编程系列1:大纲

程序员文章站 2022-03-26 13:18:59
【原创】Java并发编程系列1:大纲 一个人能力当中所蕴藏的潜能,远超过自己想象以外。 为什么要学习并发编程 随着现今互联网行业的迅猛发展,其业务复杂度、并发量也在不断增加,对程序的要求变得越来越高,传统的线性模型也越来越不适用。 同时,计算机软硬件技术的发展,也为多程序同时执行提供了底层的保证,使 ......

【原创】java并发编程系列1:大纲

一个人能力当中所蕴藏的潜能,远超过自己想象以外。

为什么要学习并发编程

随着现今互联网行业的迅猛发展,其业务复杂度、并发量也在不断增加,对程序的要求变得越来越高,传统的线性模型也越来越不适用。
同时,计算机软硬件技术的发展,也为多程序同时执行提供了底层的保证,使得并发编程成为主流。
“需求端”和“供给端”都为并发编程提供了巨大的应用空间,所以并发编程已经成为一项必备技能。
而正如开篇所引用《java并发编程实践》的那句话一样,编写正确的并发程序很难,但是比起并发程序对实际应用的性能提升、用户体验的提升,承受这点折磨是完全有必要的。
同时,并发编程模型相比于传统的线性编程模型,在设计模式和设计思想上也是有很大区别的。
可能有些程序员平常的工作并不会显式的并发相关,比如自己去写一个信号量,或者用一个线程池,但是实际上在我们的应用中却是处处都是并发的影子,学好并发编程对日常工作、对技术深造有很大帮助,即使工作中用得少,并发编程也会是面试的重要一部分。

系统学习并发编程

编写正确的程序并不容易,而编写正确的并发程序就更难了。 ——《java并发编程实践》

并发编程涉及到操作系统的线程知识,java的并发理论、各种并发框架和工具,以及线程池的使用。
比如说线程池,如果你不能确定线程池的几个参数的含义,如何能用的好一个线程池呢?
java并发编程的知识点繁多分散,要学好它,一定要先有一个整体的认识,要有一个学习脉络,循序渐进。那么就由我来帮助你建立一个清晰的java并发编程的脉络:

  1. 线程基础:线程是操作系统调度执行任务的最小单位,可以认为是并发编程的核心基础;线程的生命周期,启动和终止;线程间如何通信如何同步;线程死锁是怎么回事;一些重要概念的理解区分。
  2. java内存模型:java内存模型的抽象结构;并发要解决的三大问题;java并发的三大关键字的内存语义和如何正确使用;happens-before规则;重排序;锁究竟是什么;cas到底是什么。
  3. java中的锁:lock接口与synchronized有什么异同点;aqs是什么;重入锁;读写锁;locksupport的使用;如何优化应用中的锁;
  4. java并发容器和框架:juc包下的容器框架concurrenthashmap、concurrentlinkedqueue、blockqueue等如何正确使用;fork/join框架;threadlocal是什么。
  5. java中的原子操作类:了解java提供的一系列原子类,及其实现原理,并能正确使用。
  6. java中的并发工具类:了解juc包下的倒计时器countdownlatch、同步屏障cyclicbarrier、控制并发线程数的semaphore、用于线程间交换数据的exchanger,了解其实现原理,并能正确使用。
  7. java中的线程池:了解java线程池的使用、参数配置、监控等;了解executor框架下的threadpoolexecutor、schedulethreadpoolexecutor、futuretask的使用和原理。
  8. 并发实践:结合以上并发知识进行实践,写出并发性能良好的代码。

java并发编程大纲

这是一个专题,会按照上一节的脉络,讲解java并发的知识技能。以下的思维导图会作为一个框架指导,希望也能对你的系统学习起到提纲挈领的作用。

【参考资料】

  1. 《java并发编程的艺术》,方腾飞、魏鹏、程晓明著,机械工业出版社;
  2. 《java并发编程之美》,翟陆续、薛宾田著,电子工业出版社;
  3. 《java并发编程实践》,brian goetz、time peierls、joshua bloch、joseph bowbeer、david holmes、doug lea著,韩错、方妙译,电子工业出版社;
  4. 《java高并发程序设计》,葛一鸣、郭超编著,电子工业出版社。

本文由微型公众号【dali王的技术博客】原创,扫码关注获取更多原创技术文章。
【原创】Java并发编程系列1:大纲