带着问题学习:
为什么需要多线程?
首先要了解到
CPU、内存、I/O 设备的读取速度是有很大差异的
为了合理利用 CPU 的高性能,平衡这三者的速度差异
- CPU 增加了缓存,以均衡与内存的速度差异;
- // 导致
可见性
问题(可见性:一个线程对共享变量的修改,另外一个线程能够立刻看到。) - 操作系统增加了进程、线程,以分时复用 CPU,进而均衡 CPU 与 I/O 设备的速度差异;
- // 导致
原子性
问题 (原子性:即一个操作或者多个操作 要么全部执行并且执行的过程不会被任何因素打断,要么就都不执行) - 编译程序优化指令执行次序,使得缓存能够得到更加合理地利用。
- // 导致
有序性
问题(有序性:即程序执行的顺序按照代码的先后顺序执行。)