小册上新|Java 并发编程

站内文章封面图(1301x734).jpg

我们知道,很多框架或者自研组件的底层,都或多或少涉及到并发编程方面的技术点。

比如:在一些本地缓存组件中,当本地缓存过期后,需要从数据库加载数据,这个阶段中就会涉及到线程并发请求的处理;在设计事件通知组件的时候,需要涉及到异步处理的逻辑,而异步处理的核心则是和多线程相关;在一些高并发系统中,涉及到加锁逻辑时,我们可能要考虑锁的性能以及如何尽可能降低锁的影响粒度,等等。

并发编程掌握不好,工作中难免会遇到一些问题:

  • 程序本地跑起来没有 Bug,但是一到多线程环境下就乱了;

  • 老大让你去优化接口,每次都没有头绪;

  • JUC 的各个 API 都会用,但是不了解内部原理机制;

  • 面试问到并发编程就得跪;

  • ……

相信很多朋友学习并发编程,都背过八股文,但学习也只能是停留在技术浅层,并发编程的学习,核心在于应用,以及构建起完善的、可以应付各种问题的知识体系

DannyIdea(小林),是《Java 并发编程》和《Java开发者的RPC实战课》两本小册的作者,他曾花了大约三个月的时间,重新梳理了并发编程的核心知识体系,并且在工作中,尝试将这些学习到的技术点落地到实际项目中,例如:

扫描二维码关注公众号,回复: 14407393 查看本文章
  1. 从 0 到 1 搭建了上百容器节点的线程池监控体系;

  2. 去落地了压测与限流的基础组件;

  3. 遇到一些比较耗时的计算任务时,通过合理使用异步编程的某些技术点进行性能优化;

  4. 理解了线程上下文的原理后,在分布式环境下定制 traceId 对请求链路进行监控;

  5. 采用多线程+消息队列技术实现分库分表技术;

  6. 利用 fork/join 技术去计算一些大量级数据任务;

  7. ……

同时,他还建立了一套个人仓库,内部包含了上百个并发编程的案例,并发编程代码案例仓库:

在《Java 并发编程》这本小册中,DannyIdea 会用简单易懂的语言,将这些技术的本质梳理出来,并且大部分章节都会配备相应的实战代码,这些案例代码都会在 gitee 上有对应的仓库地址。

小册内容

在课程设计方面,这个小册并不会一开始就介绍 Java 语言体系内的各种并发编程技术。

因为基本功决定了一个人对于高级知识的认知程度,很多高级语言其实都是在对底层技术原理的封装,虽然 API 名称会有所出入,但是如果你对底层足够了解的话,会发现其实它们大多数都是相通的。

而且,并发编程的很多设计与实现,都是源自于操作系统内部的需求所发明的,例如管程、数据一致性、产生并发的原因等。

所以,我们会先系统性梳理下计算机底层原理,能够让大家了解到,前辈在面对这些复杂问题时,会采用怎样的手段去解决,最终起到一个知其然并知其所以然,且有所悟的效果,之后才开始进入到 Java 体系中的并发编程技术。

本小册的主要内容划分为以下 3 个模块。

模块一:计算机原理篇

这部分内容偏于操作系统底层,当然,也并不是只有理论,部分案例的讲解或多或少会涉及到 C++ 语言、汇编指令,在一些概念点的讲解上,还会让大家亲自参与到计算机底层原理的设计与实现中,这种场景能够加深大家对于底层原理的理解。

模块二:Java 并发编程原理篇

这个模块主要是介绍 Java 并发编程领域常用到的一些技术原理。并发编程领域主要可划分为同步、互斥、分解三个方向。

  • 同步方向:就是各个线程之间如何沟通与协调的,这块的典型代表为:Condition、notify、notifyAll。

  • 互斥方向:主要体现在如何防止多并发情况下只有一个线程可以进入临界区,典型代表就是锁。具体体现在 Java 层面的加锁、操作系统层面的锁,以及一些“无锁”的设计。

  • 分解方向:这类主要用于将一些巨大的计算任务拆解为多个子任务去各个突破,从而提升计算的效率。

模块三:并发编程实战案例篇

通过实战案例,带大家运用并发编程技术解决一些工作中可能遇到的问题,最后还会和大家分享下如何搭建一套可视化的线程池监控系统。其中设计了很多让大家感兴趣的应用场景,例如线程池监控、分布式链路id、自定义锁、本地缓存组件等等。

这些场景中或多或少都会有并发编程的影子,在每一套实战案例的背后都会有配备好充足的代码和相关注释,方便大家阅后学习。

你将获得

  1. 完整的 Java 并发编程知识体系;

  2. 应用并发编程知识优化程序性能的能力;

  3. 从 0 到 1 搭建一套线程池监控系统;

  4. 100+ 个并发编程案例的代码分析和实践。

上新特惠,限时 6 折

7月27日~8月3日,小册限时 6 折,仅需 ¥ 23.94

点击下方图片,一起加入学习吧!

猜你喜欢

转载自juejin.im/post/7124978492126691335