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并发编程实战
登录|注册

用户来信 | 真好,面试考到这些并发编程,我都答对了!

Zed 2019-06-21
你好,我是 Zed,是《Java 并发编程实战》1W+ 订阅者中的一员。
我从事 Java 开发已有五年时间了,曾在一家国内知名物流企业工作,现在杭州一家金融支付类公司继续担任 Java 工程师一职。
大概在今年四月份,在高铁上翻到一篇文章,讲的是“为什么 Object.wait() 方法一定要在 synchronized 内部使用”,因为之前我根本不知道这个问题,所以打算考考我朋友。
结果他给了我一些迥然不同的答案,并邀请我读了宝令老师的《Java 并发编程实战》专栏中的一篇文章《08 | 管程:并发编程的万能钥匙》,看完后我感觉醍醐灌顶,津津有味,果断开始学习。

我是如何通过专栏拿到 Offer 的?

机缘巧合,专栏学习到一半时 ,我辞掉了原有的工作出去面试。因为面试的岗位都是高级工程师,所以基本上离不开并发编程的问题,像锁、线程安全、线程池、并发工具类都是家常便饭
印象比较深刻的是面试官问我:线程池的大小如何确定
那时我刚看完《10 | Java 线程(中):创建多少线程才是合适的?》,然后就胸有成竹且不紧不慢地回答了,面试官听了直点头。
另外一个问题是:怎么理解活锁
于是,我又如法炮制搬出了《07 | 安全性、活跃性以及性能问题》中老师提到“路人甲乙相撞”的例子,同时给出具体的解决方案。
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《Java并发编程实战》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(18)

  • QQ怪
    阅读了zed的心得发现比自己还努力的人还是蛮多的,我会继续加油的😁

    编辑回复: 感谢你的留言及对并发编程专栏的认可,恭喜你获得「10元无门槛礼券」一张,今天20点前到账。打开“极客时间app”-“我的”--“礼券”即可查看。

    2019-06-21
    11
  • linqw
    王宝令老师的这篇专栏真的很值,开启了我对并发编程的大门,记得还没学习这篇专栏,虽然知道信号量(一个整形值、p操作、v操作)和管程(一个锁和0或者多个条件变量),但是不知如何和java联系起来,如java语言层面实现Synchroized+wait、notity、notityAll,只支持一个条件变量,sdk层面实现Lock+condition,支持多个条件变量,也不知道可见性、重排序、原子性产生的原因及对应的解决办法,也学习到java里的并发类在对应的场景使用,也学会如何站在宏观的角度去看多线程问题,跳出来看全景、钻进去看本质,也学到了对应的多线程的设计模式,多线程在各个场景的案例。学完此专栏,在去看java并发包的源码,会发现宏观的学习完,钻进去看源码的时候真的不难,最近也在自己分析java并发包的源码https://juejin.im/user/5bd8718051882528382d8728/posts,持续进化,道阻且长

    作者回复: 优秀👍

    2019-06-21
    5
  • 疯狂咸鱼
    我在想,面试时打比方举例子,面试官会不会打断
    2019-07-14
    2
  • watson
    自己是一名高龄Android开发,这个专栏是订阅的专栏里帮助最大的,感谢王老师。👍

    作者回复: 适合就好😄

    2019-06-21
    2
  • 爱吃回锅肉的瘦子
    很感谢老师的课程,刚好学完老师课程,就能在实际工作中使用到,或许是运气好。项目中交易表是按月份分表的,查询一段日期,我就用了forkjoin,以及交易表和其他表汇总。就用了CompletableFuture 。第一次使用异步编程方式进行查询,内心获得很大满足感,毕竟能够学以致用。再次谢谢老师这几十天传道授惑。

    作者回复: 学以致用👍

    2019-06-21
    2
  • Xiao
    学无止境!可以在配合着看看Linux系统组成原理和操作系统原理,能更好理解并发和多线程!
    2019-06-21
    2
  • 悠哉小二儿
    突然想起任总一句话:优秀的老师教出更优秀的学生

    作者回复: 👍

    2019-06-21
    1
  • 🐾
    相见恨晚的专栏,醍醐灌顶

    作者回复: 相见就好😄

    2019-11-08
  • Geek_19bd31
    这个 是zed 的 并发编程的链接吗 https://github.com/Fadezed/concurrency
    2019-09-17
    1
  • helloworld
    1.01的那个算是是2019最触动我的一张图片了,没有之一,只有唯一。
    2019-09-12
    1
  • 日不落帝国
    优秀
    2019-08-28
  • 业余草
    文章中的小数点是亮点
    2019-07-28
  • 2102
    最赞宝令老师对留言区的重视,几乎每个留言都会回复。专栏学习由浅入深,适合所有阶段的学员,完全学完并理解的同学一定会成为并发领域的高手。。

    作者回复: 感谢捧场😄

    2019-07-17
  • 脸不大
    通过宝令老师的课可以看出:老师不仅是个技术高手,更是一个对生活有着深刻领悟的人;通过老师讲知识点时举的例子就可以看得出;和Zed一样,我深刻的记得“活锁”是什么,就是俩人进门谦让;“死锁”是什么,就是账本管理员取账本;“等待--通知”是什么,就是医院就医医生通知叫号。。。这些知识点多久之后都不会忘,历历在目,就在两天前,驳回了同事提交的代码pull-request,因为他打印的日志中有这样的写法:logger.debug("The var1:" + var1 + ", var2:" + var2);我立马就给他讲了参数压栈和方法体的执行顺序,学以致用的时候是最开心的时候,感谢老师的精彩讲课,这套课程绝对值得二刷三刷~

    作者回复: 感谢你如此精彩的解读😄

    2019-06-26
  • Vincent
    感谢宝令老师,这个专栏学到很多,更重要的是对于并发提供了学习细化的框架,学习路线图,很棒

    作者回复: 不用客气😄有收获就好

    2019-06-25
  • 笨拙的自由
    一章不落追完了,现在一想仅仅看过一遍还是不够,想学老师系统的整理一下发到公司内网去,给别人讲一遍才能真正学到东西

    作者回复: 👍

    2019-06-21
  • 马哲富
    同学们,需要着重加强理解的是内存模型和管程;另外需要动手实践

    作者回复: 👍

    2019-06-21
  • 艾比利夫
    我才学到第9课,就已经觉得很醍醐灌顶了,继续坚持,希望全部学习完后,也能和Zed同学一样优秀吧~!加油,感谢老师

    作者回复: 加油😄

    2019-06-21
收起评论
18
返回
顶部