并发编程的本质其实就是利用多線程技术在现代多核的CPU的背景下,催生了并发编程的趋势通过并发编程的形式可以将多核CPU的计算能力发挥到极致,性能得到提升除此之外,面对复杂业务模型并行程序会比串行程序更适应业务需求,而并发编程更能吻合这种业务拆分
即使是单核处理器也支持多线程执行代码,CPU通过给每个线程分配CPU时间片来实现这个机制
时间片是CPU分配给各个线程的时间,因为时间片非常短所以CPU通过不停地切换线程执行,让我们感觉多个线程是同时执行的时间片一般是几十毫秒(ms)。
并发不等于并行:并发指的是多个任务交替进行而并行则是指真正意义上的“同时进行”。实际上如果系统内只有一个CPU,而使用多线程时那么真实系统环境下不能并行,只能通过切换时间片的方式交替进行而成为并发执行任务。真正的并行也只能出现在拥有多个CPU的系统中
充分利用多核CPU的计算能力;
方便进行业务拆分,提升應用性能;
高并发场景下导致频繁的上下文切换
临界区线程安全问题,容易出现死锁的产生死锁就会造成系统功能不可用
CPU通过时间片汾配算法来循环执行任务,当前任务执行一个时间片后会切换到下一个任务但是,在切换前会保存上一个任务的状态以便下次切换回這个任务时,可以再加载这个任务的状态所以任务从保存到再加载的过程就是一次上下文切换。
个人公众号日常分享一个知识点,每忝进步一点点面试不慌