1 Star 0 Fork 0

unidentifiable / juc

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README

章节小结

第一章

第二章

  • 单核CPU下, 多线程不能实际提高程序运行效率, 只是为了能够在不同的任务之间切换, 不同线程轮流使用CPU, 不至于一个线程总占用CPU, 别的线程没法干活
  • 多核CPU可以并行跑多个线程, 但能否提高程序运行效率还是要分情况的
    • 有些任务, 经过精心设计, 讲任务拆分, 当然可以提高程序的运行效率. 但不是所有计算任务都能拆分(参考后文的[阿姆达尔定律])
    • 也不是所有任务都需要拆分, 任务的目的如果不同, 谈拆分和效率没啥意义
  • IO操作不占用CPU, 只是我们一般拷贝文件使用的是[阻塞IO], 这时相当于线程虽然不用CPU, 但需要一直等待IO结束, 没能充分利用线程. 所以才有后面的[非阻塞IO]和[异步IO]优化

第三章

  • 线程创建
  • 线程重要 api, 如: start, run, sleep, join, interrupt等
  • 线程状态
  • 应用方面
    • 异步调用: 主线程执行期间, 其他线程异步执行耗时操作
    • 提高效率: 并行计算, 缩短运算时间
    • 同步等待: join
    • 统筹规划: 合理使用线程, 得到最优效果
  • 原理方面
    • 线程运行流程: 栈, 栈帧, 上下文切换, 程序计数器
    • Thread两种创建方式的源码
  • 模式方面
    • 两阶段终止

第四章

  • 分析多线程访问共享资源时, 哪些代码片段属于临界区
  • 使用synchronized互斥解决临界区的线程安全问题
    • 掌握synchronized锁对象语法
    • 掌握synchronized加载成员方法和静态方法语法
    • 掌握wait/notify同步方法
  • 使用lock互斥解决临界区的线程安全问题
    • 掌握lock的使用细节: 可打断, 锁超时, 公平锁, 条件变量
  • 学会分析变量的线程安全性, 掌握常见线程安全类的使用
  • 了解线程活跃性问题: 死锁, 活锁, 节
  • 应用方面
    • 互斥: 使用synchronized或Lock达到共享资源互斥效果
    • 同步: 使用wait/notify或Lock的条件变量来达到线程间通讯效果
  • 原理方面
    • monitor, synchronized, wait/notify原理
    • synchronized进阶原理
    • park & unpark 原理
  • 模式方面
    • 同步模式之保护性暂停
    • 异步模式之生产者消费者
    • 同步模式之顺序控制

第五章

  • 可见性(由JVM缓存优化引起)
  • 有序性(由JVM指令重排序优化引起)
  • happens-before规则
  • 原理方面
    • CPU指令并行
    • volatile
  • 模式方面
    • 两阶段终止模式的volatile改进
    • 同步模式之balking

第六章

  • CAS 与 volatile
  • API
    • 原子整数
    • 原子引用
    • 原子数组
    • 字段更新器
    • 原子累加器
  • Unsafe
  • 原理方面
    • LongAdder 源码
    • 伪共享

第七章

  • 不可变类使用
  • 不可变类设计
  • 原理方面
    • final
  • 模式方面
    • 享元

空文件

简介

暂无描述 展开 收起
Java
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
Java
1
https://gitee.com/unidentifiable/juc.git
git@gitee.com:unidentifiable/juc.git
unidentifiable
juc
juc
master

搜索帮助