开篇
主要内容
java并发编程核心原理
12并发工具类
9中并发设计模式
4大并发实战案例
学习目标
从单一的知识和技术中“跳出来”,高屋建瓴地看问题,并逐步建立自己的知识体系。
掌握java并发编程技术背后的逻辑关系以及应用场景。(建立并发问题的全景图,理解并发问题本质。)
开篇词
推荐《操作系统原理》,并发编程最早的应用领域就是操作系统
synchronized、wait()、notify() 不过是操作系统领域里管程模型的一种实现,条件变量 Condition也是管程里的概念。单独理解管中窥豹,站在理论模型高度会发现知识原来如此简单。
什么是管程?
管程作为一种解决并发问题的模型,是继信号量模型之后的一项重大创新,它与信号量在逻辑上是等价的(可以用管程实现信号量,也可以用信号量实现管程),但是相比之下管程更易用。
并发编程三个核心问题:分工、同步、互斥。
分工指的是如何高效地拆解任务并分配给线程,而同步指的是线程之间如何协作,互斥则是保证同一时刻只允许一个线程访问共享资源。
Java SDK 并发包很大部分内容都是按照这三个维度组织的,例如 Fork/Join 框架就是一种分工模式,CountDownLatch 就是一种典型的同步方式,而可重入锁则是一种互斥手段。