【原创】Java并发编程系列1:大纲
2020-06-05 09:41
99 查看
【原创】Java并发编程系列1:大纲
一个人能力当中所蕴藏的潜能,远超过自己想象以外。
为什么要学习并发编程
随着现今互联网行业的迅猛发展,其业务复杂度、并发量也在不断增加,对程序的要求变得越来越高,传统的线性模型也越来越不适用。 同时,计算机软硬件技术的发展,也为多程序同时执行提供了底层的保证,使得并发编程成为主流。 “需求端”和“供给端”都为并发编程提供了巨大的应用空间,所以并发编程已经成为一项必备技能。 而正如开篇所引用《Java并发编程实践》的那句话一样,编写正确的并发程序很难,但是比起并发程序对实际应用的性能提升、用户体验的提升,承受这点折磨是完全有必要的。 同时,并发编程模型相比于传统的线性编程模型,在设计模式和设计思想上也是有很大区别的。 可能有些程序员平常的工作并不会显式的并发相关,比如自己去写一个信号量,或者用一个线程池,但是实际上在我们的应用中却是处处都是并发的影子,学好并发编程对日常工作、对技术深造有很大帮助,即使工作中用得少,并发编程也会是面试的重要一部分。
系统学习并发编程
编写正确的程序并不容易,而编写正确的并发程序就更难了。 ——《Java并发编程实践》
并发编程涉及到操作系统的线程知识,Java的并发理论、各种并发框架和工具,以及线程池的使用。 比如说线程池,如果你不能确定线程池的几个参数的含义,如何能用的好一个线程池呢? Java并发编程的知识点繁多分散,要学好它,一定要先有一个整体的认识,要有一个学习脉络,循序渐进。那么就由我来帮助你建立一个清晰的Java并发编程的脉络:
- 线程基础:线程是操作系统调度执行任务的最小单位,可以认为是并发编程的核心基础;线程的生命周期,启动和终止;线程间如何通信如何同步;线程死锁是怎么回事;一些重要概念的理解区分。
- Java内存模型:Java内存模型的抽象结构;并发要解决的三大问题;Java并发的三大关键字的内存语义和如何正确使用;happens-before规则;重排序;锁究竟是什么;CAS到底是什么。
- Java中的锁:Lock接口与synchronized有什么异同点;AQS是什么;重入锁;读写锁;LockSupport的使用;如何优化应用中的锁;
- Java并发容器和框架:JUC包下的容器框架ConcurrentHashMap、ConcurrentLinkedQueue、BlockQueue等如何正确使用;Fork/Join框架;ThreadLocal是什么。
- Java中的原子操作类:了解Java提供的一系列原子类,及其实现原理,并能正确使用。
- Java中的并发工具类:了解JUC包下的倒计时器CountDownLatch、同步屏障CyclicBarrier、控制并发线程数的Semaphore、用于线程间交换数据的Exchanger,了解其实现原理,并能正确使用。
- Java中的线程池:了解Java线程池的使用、参数配置、监控等;了解Executor框架下的ThreadPoolExecutor、ScheduleThreadPoolExecutor、FutureTask的使用和原理。
- 并发实践:结合以上并发知识进行实践,写出并发性能良好的代码。
Java并发编程大纲
这是一个专题,会按照上一节的脉络,讲解Java并发的知识技能。以下的思维导图会作为一个框架指导,希望也能对你的系统学习起到提纲挈领的作用。
【参考资料】
- 《Java并发编程的艺术》,方腾飞、魏鹏、程晓明著,机械工业出版社;
- 《Java并发编程之美》,翟陆续、薛宾田著,电子工业出版社;
- 《Java并发编程实践》,Brian Goetz、Time Peierls、Joshua Bloch、Joseph Bowbeer、David Holmes、Doug Lea著,韩错、方妙译,电子工业出版社;
- 《Java高并发程序设计》,葛一鸣、郭超编著,电子工业出版社。
本文由微型公众号【Dali王的技术博客】原创,扫码关注获取更多原创技术文章。
相关文章推荐
- 原创】Java并发编程系列2:线程概念与基础操作
- Java并发编程系列之二十七:ThreadLocal
- July -- 程序员面试、算法研究、编程艺术、红黑树、数据挖掘5大经典原创系列集锦与总结
- [原创]手动配置Ubuntu Linux系列1-DHCP客户端 推荐
- 【原创】StreamInsight查询系列(五)——基本查询操作之用户自定义聚合
- linux性能调优原创翻译系列
- 端午节主题模板--Ideappt原创PPT模板系列
- 原创 征文系列二 我爱《动物世界》
- (原创)一步一步学Linq to sql系列文章
- 【黑金ZYNQ7000系列原创视频教程】04.熟悉ZYNQ内部中断——内部定时器中断实验
- [原创]FineUI秘密花园(三十) — ViewState与XState (本系列文章最后一篇,兑现承诺,现提供完整PDF版下载!)
- 银河系列原创教程
- Nginx系列大纲
- 【原创】Altera系列工具(QuartusII、SOPC Builder、NiosII IDE)工作过程分析
- 【原创】StreamInsight查询系列(十八)——查询模式之趋势发现
- [原创]Devexpress XtraReports 系列 7 创建Drill-Down(向下钻取)报表
- unity3D游戏开发实战原创视频讲座系列13之帽子戏法游戏开发(预告)
- [原创] MSP430G2系列图形化编程相关资料
- 程序员面试、算法研究、编程艺术、红黑树、数据挖掘5大经典原创系列集锦与总结
- 《zw版·Halcon-delphi系列原创教程》 酸奶自动分类脚本(机器学习、人工智能)