单线程与多线程解析

102 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第1天,点击查看活动详情

多线程的本质

无论是单个CPU还是多个CPU,在运行应用程序(跑进程)的时候,多线程的本质就是让CPU在极短的时间之内在做几件事情之间进行切换。单核CPU,多线程不会提高程序的代码执行速度,反而会降低执行速度,线程越多,执行速度越慢,因为线程切换会有时间资源消耗。如果有多次密集型I/O操作,或者多次网络通信的等待操作,多线程会比单线程快。 单线程只会映射到一个CPU上,而多线程会映射到多个CPU上 多核CPU的情况下,如果有两个或者以上的CPU来跑这个程序就会比单线程快。

多线程的目的

多线程编程的目的,就是"最大限度地利用CPU资源",当某一线程的处理不需要占用CPU而只和I/O等资源打交道时,让需要占用CPU资源的其它线程有机会获得CPU资源。

多线程的优点与缺点

多线程的缺点:

1、线程切换需要消耗小部分计算机资源和时间资源

2、如果没有进行网络通信、密集型I/O操作,多线程执行完相同的代码比单线程慢,线程越多越慢。

3、多线程对于一些公共资源或者公共变量的访问和修改时要注意特别的,需要一些锁定什么的,还有顺序问题的考虑。

多线程的优点:

1、即采用多线程不会提高程序的执行速度,反而会降低速度,但是对于用户来说,可以减少用户的响应时间,不卡界面,用户可以在这段时间去操作其他应用程序(其他进程)。

扩展知识

多进程技术(多线程技术的原始祖宗,想了解的可以百度瞅瞅,这里就不做详细说明,避免误导新手):

缺点:

1、创建进程是高消耗操作

2、进程之间通信的不方便

3、进程切换的时间代价太大

(注:本文中参杂部分个人理解,如有不对的,欢迎大家指正)