为何要多线程编程
随着硬件的不断发展,出现了多核CPU。如何让多个CPU正确而有效的工作正是多线程编程的使命。
多线程之基础概念
线程与进程
- 线程是CPU调度的最小单元,是进程中的一个个执行流程。
- 进程是操作系统进行资源分配和调度的最小单元,可以简单地理解为系统中运行的一个程序就是一个进程。
- 一个进程至少包含一个线程,可以包含多个线程,这些线程共享进程的资源(比如堆区和方法区资源)。同时每个线程都拥有独立的运行栈个程序计数器,线程切换开销小。
并行与并发
- 并行:多个线程任务在多个CPU上执行,是真正地同时进行。
- 并发:多个线程任务在单个CPU上执行,由于快速的轮换执行,给人一个错觉是同时进行的。
线程安全
线程安全的定义:如果线程的随机调度顺序不影响某段代码最后的执行结果,那么我们认为这段代码是线程安全的。
常见的线程安全问题有,多个线程对一个共享变量进行累加操作。
死锁
死锁的定义:死锁是指两个或者两个以上的线程在执行过程中,因争夺资源而互相等待的现象。
参考:
博客-程序员自由之路
博客-程序员小灰