一、并发的核心思想:
利用现代的多核CPU,同时对一个job进行拆分、处理。避免1个CPU吭哧吭哧一直做工。
二、并发在java的抽象:
java中万物皆对象,
单核CPU的一段时间片,及其CPU附属的寄存器、1、2、3级缓存等资源,被抽象成对象Thread。
三、并发常见的问题:
1. 线程的执行顺序不如预期
- 解决思路:todo
2. 数据的读写不如预期(线程安全问题)
线程安全问题的触发条件:
- 多线程竞争
- 有共享数据(局部变量是线程私有的)
- 有多条语句操作共享数据
- 单条语句本身非原子操作(比如i++)
- 解决思路:同一时间只能有1个线程修改数据(加锁)
jvm锁分为两大流派:
- synchronized
- CAS + AQS