Java并发编程实战
王宝令
资深架构师
立即订阅
15151 人已学习
课程目录
已完结 50 讲
0/4登录后,你可以任选4讲全文学习。
开篇词 (1讲)
开篇词 | 你为什么需要学习并发编程?
免费
学习攻略 (1讲)
学习攻略 | 如何才能学好并发编程?
第一部分:并发理论基础 (13讲)
01 | 可见性、原子性和有序性问题:并发编程Bug的源头
02 | Java内存模型:看Java如何解决可见性和有序性问题
03 | 互斥锁(上):解决原子性问题
04 | 互斥锁(下):如何用一把锁保护多个资源?
05 | 一不小心就死锁了,怎么办?
06 | 用“等待-通知”机制优化循环等待
07 | 安全性、活跃性以及性能问题
08 | 管程:并发编程的万能钥匙
09 | Java线程(上):Java线程的生命周期
10 | Java线程(中):创建多少线程才是合适的?
11 | Java线程(下):为什么局部变量是线程安全的?
12 | 如何用面向对象思想写好并发程序?
13 | 理论基础模块热点问题答疑
第二部分:并发工具类 (14讲)
14 | Lock和Condition(上):隐藏在并发包中的管程
15 | Lock和Condition(下):Dubbo如何用管程实现异步转同步?
16 | Semaphore:如何快速实现一个限流器?
17 | ReadWriteLock:如何快速实现一个完备的缓存?
18 | StampedLock:有没有比读写锁更快的锁?
19 | CountDownLatch和CyclicBarrier:如何让多线程步调一致?
20 | 并发容器:都有哪些“坑”需要我们填?
21 | 原子类:无锁工具类的典范
22 | Executor与线程池:如何创建正确的线程池?
23 | Future:如何用多线程实现最优的“烧水泡茶”程序?
24 | CompletableFuture:异步编程没那么难
25 | CompletionService:如何批量执行异步任务?
26 | Fork/Join:单机版的MapReduce
27 | 并发工具类模块热点问题答疑
第三部分:并发设计模式 (10讲)
28 | Immutability模式:如何利用不变性解决并发问题?
29 | Copy-on-Write模式:不是延时策略的COW
30 | 线程本地存储模式:没有共享,就没有伤害
31 | Guarded Suspension模式:等待唤醒机制的规范实现
32 | Balking模式:再谈线程安全的单例模式
33 | Thread-Per-Message模式:最简单实用的分工方法
34 | Worker Thread模式:如何避免重复创建线程?
35 | 两阶段终止模式:如何优雅地终止线程?
36 | 生产者-消费者模式:用流水线思想提高效率
37 | 设计模式模块热点问题答疑
第四部分:案例分析 (4讲)
38 | 案例分析(一):高性能限流器Guava RateLimiter
39 | 案例分析(二):高性能网络应用框架Netty
40 | 案例分析(三):高性能队列Disruptor
41 | 案例分析(四):高性能数据库连接池HiKariCP
第五部分:其他并发模型 (4讲)
42 | Actor模型:面向对象原生的并发模型
43 | 软件事务内存:借鉴数据库的并发经验
44 | 协程:更轻量级的线程
45 | CSP模型:Golang的主力队员
结束语 (1讲)
结束语 | 十年之后,初心依旧
用户故事 (2讲)
用户来信 | 真好,面试考到这些并发编程,我都答对了!
3 个用户来信 | 打开一个新的并发世界
Java并发编程实战
登录|注册

3 个用户来信 | 打开一个新的并发世界

王宝令 2019-07-04
你好,我是王宝令。
很高兴能再次收到用户的来信,一下子还是 3 封,真是受宠若惊。
通过大家的来信、留言,我深刻感受到大家学习的欲望和热情,也很感谢你们能跟着我一起,把并发这么难啃的知识点都“嚼碎了”——“吃下去”——“消化掉”,变成自己的东西。
脚踏实地,才能仰望天空。
来信一:他说,这是一盏明灯,可以带你少走很多弯路,正确前行,野蛮生长。
你好,我是笑笑,17 届杭师大计算机毕业的学生,现在一个电商互联网公司做 Java 开发。
在没有学习这个专栏之前,我自己也曾读过一些并发编程相关的书,但那时刚毕业,看完后也仅仅是知道了并发的概念、并发产生的原因,以及一些并发工具类的使用,整体处于“了解”阶段,距离“掌握”还很远。所以,看到“极客时间”出并发编程的专栏后,我立马就订阅了。
第一个感受:宝令老师的讲解思路特别清晰,由简入深。为什么会出现这些技术、这些技术带来的影响点以及如何能更合理地使用这些技术等内容,都阐述得清清楚楚。整个专栏下来,宝令老师带我“游览”并看清了并发编程的全貌。
第二个感受:清晰简洁,理论和实践并行。每次读完老师的文章后,先前很多模糊的知识点都变得更加地清晰,比如:
可见性是由于在多核时代,每颗 CPU 都有自己的缓存导致的,具体看《01 | 可见性、原子性和有序性问题:并发编程 Bug 的源头》
锁要和资源关联起来,一个锁可以锁多个资源,但是一个资源不可以用多个锁,可类比球赛门票的管理,点击温故《03 | 互斥锁(上):解决原子性问题》
Java 线程的生命周期与操作系统线程生命周期的相通点以及区别,可参考《09 | Java 线程(上):Java 线程的生命周期》
结合例子来带你理解 Happens-Before 规则,具体看《02 | Java 内存模型:看 Java 如何解决可见性和有序性问题》
……
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《Java并发编程实战》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(20)

  • Sunqc
    我是一楼吗,哈哈,在反复看,理解,虽然工作中还没用到,但是学了之后更加自信

    作者回复: 还有什么能比自信心更重要呢😄

    2019-07-04
    1
    10
  • 艾比利夫
    老师您好,我又来评论了,在您发布第一篇“用户故事”的时候,当时也留了言,说那时自己只学到第9课,会继续努力。

    直到今天,我已拜读完老师的所有章节,也正巧赶上老师发布第二篇“用户故事”,那我也想把我的感受写一下。

    不带任何夸张的说,老师的这部“高并发”专栏是我在极客时间里看的最认真,也是收获最多的专栏。里面的很多章节我都会反复拜读,一次比一次理解的更加到位。其中第二部分的并发工具类和第三部分的并发设计模式,我都对每一小节自己写了demo,尽可能举一反三。每每做完demo,跑出自己想要的结果,都会有一种豁然开朗的感觉。

    自己已经工作5年多了,但在以前面试中,只要面试官问我多线程,我也只能回答一些简单的使用,但当面试官问我为什么要这么用,或者这么用可能会有哪些坑的时候,我都尴尬的答不上来。但经过这次的学习,我觉得我已经可以对高并发的技术选型有一定的想法和思路了。根据不同的业务场景,如何选取合适的并发工具,如何选用合适的设计模式,自己心里也有些思路了。在这里我非常感谢老师每一章节的认真备课和教导,也庆幸自己坚持了下来。在以后的工作中,我会把这些理论变成实战,写出漂亮的高并发代码,给老师交一份满意的考卷。

    正如您开篇词里所说:“你有没有一直坚持一件事,并从中获益?”。在今年年初,我把2019年定为自己学习的一年,现在已经7月份了,回顾前半年的学习,英语也好,技术也罢,自己还算是坚持了下来。下半年我会继续保持,争取到年底的时候,回顾全年,发现自己已经有一个惊人的提升吧。

    Keep study! Keep doing great things!

    作者回复: 很荣幸专栏能不负你的认真😄相信你一定能在工作中做的很好,认真的人一定会有所成就的,一起努力!

    2019-07-04
    1
    6
  • nimil
    凑齐了五十讲O__O "…
    2019-07-04
    6
  • 某、 
    今天像往前一样继续打开准备学习,突然发现多了一篇文章,哈哈,终于都可以前排回复啦!

    作者回复: 惊喜总是在不经意间😄

    2019-07-04
    4
  • QQ怪
    👍👍👍
    2019-07-04
    3
  • lll
    期待您的第二个专题,做一件事容易,做好一件事,让大部分人认可真的很难,即使这么难,您还是做到了,感谢您从繁忙的工作中抽出时间来做这个专题。期待您的下一个专题。

    作者回复: 感谢认可😄现在就想休息😂

    2019-07-05
    2
  • 无言的约定
    王老师,开发中遇到一个问题亟待解决,求助:
    线程池管理了多个线程,要处理的告警信息从kafka中取,这些信息有告警和恢复两种。怎么能保证处理告警的线程先于处理恢复的线程。(ParserTask implements Runnable 处理每个信息都要new 一个ParserTask 交给线程池 taskExecutor.execute(new ParserTask));

    作者回复: 不知道线程池使用优先级队列能不能解决你的问题

    2019-09-04
    2
    1
  • ken
    老师您好,看完您的Java并发编程实战所有课程后我一直有一个问题没有弄明白,线程的同步与互斥有什么不同,我的理解是他们是实现同一目的的两个方案。

    互斥:要求对共享资源操作要满足互斥条件
    同步:一个线程操作其他线程等待
    既然是两个名词他们应该一定不一样,既然不一样那就有相同点和不同点,麻烦您帮解个惑。

    作者回复: 简单理解,互斥就是lock,同步是wait/notify,同步更多的是协作

    2019-08-06
    1
    1
  • aoe
    努力的人这么多!
    2019-11-22
  • DFighting
    终于读完了,内容很充实,读起来也很通俗易懂,满满都是干货,现在我看框架源码,分析问题都会习惯性问一下自己:这里需要并发提高吞吐吗?这里这么写会有并发问题吗?怎么结合业务场景优化已有的逻辑,提升产品的稳定性和性能。读完整篇文章,脑海里只留下了分工、协作和共享,这就足够了,其他的忘了就忘了吧,到用的时候再上来查下,然后就能慢慢在脑海里搭建起来自己的并发知识体系。

    作者回复: 学会思考很重要👍

    2019-10-17
  • 山顶的洞
    工作中忙于业务开发,无暇巩固基础。工作量总是超负荷,节奏亦是996。
    感慨时光匆匆,技术无所进步
    2019-09-25
  • 码农Kevin亮
    在学习此专栏前,并发编程一直是个让我过不去的坎。感谢极客时间,感谢王老师!通过本专栏的学习,使我直接杀入第五届阿里中间件决赛,这归功于本专栏的讲解特别地清晰、深入浅出。期待王老师的下一门课

    作者回复: 恭喜恭喜!比我都厉害😄

    2019-09-14
  • angel😇txy🤓
    很幸运的来到这里,希望自己也能像那些优秀的同学一样,在并发领域里能有找到属于自己的地方
    2019-08-23
  • 业余草
    钓鱼的时候,带个耳机一直再听。
    2019-07-28
  • 向往的生活
    这个全景图看着好厉害呀
    2019-07-23
  • 古夜
    老师你好,我发现平常的工作中很少有多线程的场景来磨练自己所学,什么时候老师出个课程带我们逐步分析线程呢?

    作者回复: 目前没这个计划😂

    2019-07-16
  • 无言的约定
    默默的拜读,满心的感谢

    作者回复: 客气啦😄

    2019-07-16
  • Vincent
    全景图好评,能分享出来吗?
    2019-07-15
  • 小西
    王老师您好,学完专栏,收获很大,顺便问一下您专栏中出现的各种图是用的什么画图工具😂。

    作者回复: PPT😂

    2019-07-10
  • blue mountain
    这个专栏,真的是非常牛逼,我毕业才入行java的,一年多,虽然看过java的并发书籍,真的看的很晕,没有体系,让我用,真的是没底气,这套并发的知识体系是真的讲的牛逼,希望老师以后多出一些专栏:JVM、spring等等都可以。

    作者回复: 过奖了😄

    2019-07-08
收起评论
20
返回
顶部