Skip to content

极客时间 ——《Java并发编程实战》 总览与导航 #44

Description

@funnycoding

这系列的读书笔记写了什么

image-20200430213015880

主体学习材料:极客时间课程 —— 《Java 并发编程实战》。

其他内容:

  • 个人对于知识的整合:包括在这系列课程,可能会引用别的地方的并发资料,看看不同的人对相同的知识点的不同的见解。(推荐 并发编程网)
  • 可运行的代码范例:其实这门课还算不错了,代码大部分是可运行的,后期伪代码多一些,《JCIP》这本书基本都是说明代码,如果能配套真正可运行的案例,这书目前8-9分,我愿意给100昏。
  • 重制的示意图:作者配了很多不错的示意图,我会重新绘制一遍,大体框架不会做改动,但是可能会加一些个人说明,自己理解一遍的同时也帮助别人理解。
  • 涉及到的并发容器源码的阅读:并发知识不可避免的会涉及到并发容器,这部分如果不看源码很快你就会被相当多的并发容器给绕晕了,先总结其特性从高层次了解其机制,后洞察其细节,从低层次了解其实现,这样的话我觉得学习效果最好,而受篇幅所限,这部分内容作者是没有具体讲解的,那就由我补上。
  • 课程留言: 我认为其二有价值的地方,底下的留言可以启发你的思考。
  • 个人的评注以及我有疑惑但是作者没有细讲的地方:也算是知识的迁移,每篇会整理出QA,把我认为我有疑惑的地方自己去弄明白。
  • 最最最主要的为了我个人的学习,写读书笔记几个月了,对于知识的学习,梳理,复习,运用真的非常有用,所以才能一直检查下来做这件事。

我对于这门课的评价:截止到今天 2020-08-24 ,已经把这门课的主体内容学完了,速度挺慢的,基本按照一天1篇的进度在走,首先看课程的结构,作者将他要描述的并发知识分为了3个模块:

  • 第一部分——基础并发知识
  • 第二部分——并发工具类
  • 第三部分——并发设计模式

这种分层挺清晰的,所以不仅能学到专业知识,也可以借鉴作者的写作结构。

其次,我认为这门课最有价值的点在于:能够用比较好理解的方式去阐述复杂的并发知识。有利有弊,弊端就在于其内容的深度肯定是不及**《JCIP Java 并发编程实战》**这本书的。但是我觉得这门课用来入门,或者对照着经典书籍学习,效果很不错。

曾经对于并发是持有一种畏惧态度的,因为工作中一直没怎么接触过,之前的学习也是零散的,不成体系。今年以来开始构建自己的知识体系结构,坚持到现在,收获已经很多了。

首先是你会发现:底层知识虽然难,但是很多点都是相通的。学明白了一个,见到另一个的时候或多或少都会有些联系,这时候如果能做到知识的迁移,将新老知识联系在一起,你会发现知识是越学越少的,这可能就是把书读薄吧。

其次,构建成体系知识的最好方法就是看书,其中精华我认为在序言和目录,最近的学习过程也是提升阅读能力的过程,从线性阅读:从前到后的遍历 到 模块化阅读:将一本书拆成一个个模块,只看自己要学的模块,对比多本书对同一个知识的讲解,从而更深入的学习,个人觉得这是最大的收获 —— 提升了学习能力。

目前已完成的章节:

第一部分:并发理论基础

这部分主要就是介绍并发知识的基础:从并发的由来,并发问题的根子出在哪里,上到高级编程语言的编译器,下到CPU与CPU缓存,以及Java对于并发问题做出的应对,提供了什么工具帮助你解决问题,不同工具之间的适用场景,以及它们的利弊在哪里

  • {% post_link 读书笔记/极客时间/Java并发编程实战/第一部分—基础/01|可见性、原子性和有序性问题:并发编程Bug的源头 01 | 可见性、原子性和有序性问题:并发编程Bug的源头 %}
  • {% post_link 读书笔记/极客时间/Java并发编程实战/第一部分—基础/02|内存模型:Java如何解决可见性和有序性问题 02 | 内存模型:Java如何解决可见性和有序性问题 %}
  • {% post_link 读书笔记/极客时间/Java并发编程实战/第一部分—基础/03|互斥锁解决原子性问题 03 | 互斥锁 解决原子性问题 %}
  • {% post_link 读书笔记/极客时间/Java并发编程实战/第一部分—基础/04|互斥锁(下)如何用一把锁保护多个资源 04 | 互斥锁(下)如何用一把锁保护多个资源 %}
  • {% post_link 读书笔记/极客时间/Java并发编程实战/第一部分—基础/05|死锁 05 | 一不小心就死锁了,怎么办? %}
  • {% post_link 读书笔记/极客时间/Java并发编程实战/第一部分—基础/06|等待通知 06 | 用等待——通知机制优化循环等待 %}
  • {% post_link 读书笔记/极客时间/Java并发编程实战/第一部分—基础/07|安全性、活跃性、性能 07 | 安全性、活跃性、性能 %}
  • {% post_link 读书笔记/极客时间/Java并发编程实战/第一部分—基础/08|管程 08 | 管程:并发编程的万能钥匙 %}
  • {% post_link 读书笔记/极客时间/Java并发编程实战/第一部分—基础/09|线程生命周期 09 | 线程生命周期 %}
  • {% post_link 读书笔记/极客时间/Java并发编程实战/第一部分—基础/10|创建多少线程合适 10 | 创建多少线程合适 %}

第二部分:并发工具类

很实际的工具介绍,配合源码,自己看看源码实现,看看注释,写几个Demo,食用风味更佳

  • {% post_link 读书笔记/极客时间/Java并发编程实战/第二部分—并发工具类/14|Lock和Condition 14 | Lock和Condition %}
  • {% post_link 读书笔记/极客时间/Java并发编程实战/第二部分—并发工具类/15|Dubbo如何使用管程 15 | Dubbo如何使用管程 %}
  • {% post_link 读书笔记/极客时间/Java并发编程实战/第二部分—并发工具类/16|Semaphore 16 | Semaphore %}
  • {% post_link 读书笔记/极客时间/Java并发编程实战/第二部分—并发工具类/17|ReadWriteLock 17 | ReadWriteLock %}
  • {% post_link 读书笔记/极客时间/Java并发编程实战/第二部分—并发工具类/18|StampedLock 18 | StampedLock %}
  • {% post_link 读书笔记/极客时间/Java并发编程实战/第二部分—并发工具类/19|CountDOwnLatch 19 | CountDownLatch %}
  • {% post_link 读书笔记/极客时间/Java并发编程实战/第二部分—并发工具类/20|并发容器 20 | 并发容器 %}
  • {% post_link 读书笔记/极客时间/Java并发编程实战/第二部分—并发工具类/21|原子类 21 | 原子类 %}
  • {% post_link 读书笔记/极客时间/Java并发编程实战/第二部分—并发工具类/22|Executor线程池 22 | Executor线程池 %}
  • {% post_link 读书笔记/极客时间/Java并发编程实战/第二部分—并发工具类/23|Future 23 | Future %}
  • {% post_link 读书笔记/极客时间/Java并发编程实战/第二部分—并发工具类/24|CompletableFuture 24 | CompletableFuture:异步编程没那么难 %}
  • {% post_link 读书笔记/极客时间/Java并发编程实战/第二部分—并发工具类/25|CompletionService 25 | CompletionService:如何批量执行异步任务 %}

第三部分:并发设计模式

解决并发问题的方法已经被总结成了稳定可靠的套路,这里的设计模式和GOF的设计模式还不太一样,更多的是指问题的通解模型

  • {% post_link 读书笔记/极客时间/Java并发编程实战/第三部分—并发设计模式/28|Immutablity模式 28 | Immutability模式:如何利用不变性解决并发问题 %}
  • {% post_link 读书笔记/极客时间/Java并发编程实战/第三部分—并发设计模式/29|CopyOnWrite 29 | Copy-On-Write模式:不是延迟策略的COW %}
  • {% post_link 读书笔记/极客时间/Java并发编程实战/第三部分—并发设计模式/30线程本地存储 30 | 线程本地存储模式:没有共享就没有伤害%}
  • {% post_link 读书笔记/极客时间/Java并发编程实战/第三部分—并发设计模式/31|GuardedSuspension 31 | Guarded Suspension模式:等待唤醒机制的规范实现 %}
  • {% post_link 读书笔记/极客时间/Java并发编程实战/第三部分—并发设计模式/32|Balking 32 | Balking模式:再谈线程安全的单例模式 %}
  • {% post_link 读书笔记/极客时间/Java并发编程实战/第三部分—并发设计模式/33|Thread-Per-Message 33 | Thread-Per-Message模式:最简单实用的分工方法 %}
  • {% post_link 读书笔记/极客时间/Java并发编程实战/第三部分—并发设计模式/34|Worker-Thread 34 | Worker Thread模式:如何避免重复创建线程 %}
  • {% post_link 读书笔记/极客时间/Java并发编程实战/第三部分—并发设计模式/35|两阶段终止 35 | 两阶段终止模式:如何优雅地终止线程 %}
  • {% post_link 读书笔记/极客时间/Java并发编程实战/第三部分—并发设计模式/36|生产者—消费者模式 36 | 生产者——消费者模式:用流水线思想提高效率 %}

待完成章节:↓

第四部分:案例分析

  • 38 | 案例分析(一):高性能限流器 Guava RateLimiter
  • 39 | 案例分析(二):高性能网络应用框架 Netty
  • 40 | 案例分析(三):高性能队列 Disruptor
  • 41 | 案例分析(四):高性能数据库连接池 HikariCP

第五部分:其他并发模型

  • 42 | Actor模型:面向对象原生的并发模型
  • 43 | 软件事务内存:借鉴数据库的并发经验
  • 44 | 协程:更轻量级的线程
  • 45 | CSP模型:Golang的主力成员

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions