无论在哪种编程语言中,多线程都是重中之重。所以说掌握多线程并发编程是一个优秀的程序员所必须的一项技能。虽然平时都有封装好的现成的可以使用,但是知识呢要吃到肚子才更安心。下面我们就通过一系列的博文,来系统的介绍下多线程。
首先我们还是得从进程、线程基础知识开始介绍。
什么是进程?
① 进程是系统进行资源分配的最小单位,也是系统进行资源调度的基本执行单元。
② 它是程序的一次执行过程。简单点的说“进程是正在运行的程序的实例”。
③ 每个进程运行在受保护的独立的内存空间内,进程和进程之间互不干扰。
什么是线程?
① 线程是CPU调度的最小单位,是进程中的一个实体。
② 每一个应用程序在启动之后,都会默认开启一条主线程,除了主线程,其他的线程都是子线程。
③ 一个线程可以创建和撤销另一个线程。(线程的生命周期放在下一篇博文里面。)
进程、线程区别是什么?
① 进程和线程都是程序运行的基本单元,一个程序至少有一个进程,一个进程至少有一个线程。
② 线程的划分尺度小于进程,使得多线程程序的并发性高。
③ 同一个进程中的多个线程之间可以并发执行,线程共享内存,从而极大地提高了程序的运行效率。
关于并发、并行的区别
并发
简单的来说就是指一个时间段内,多个任务同时处于运行活跃状态,而不是在同一时刻运行多个任务。那问题来了,为什么我们感觉像是多个任务同时执行的呢?这是因为每个线程都被分了一个时间段,叫做时间片。因为CPU处理速度很快,所以看上去就是多个任务在同时执行,实际上就只有一个任务在执行。
并行
并行相对来说能简单些,指若干个程序段同时在系统中运行,这些程序的执行在时间上是重叠的,一个程序段的执行尚未结束,另一个程序段的执行已经开始,无论从微观还是宏观,程序都是一起执行的。
举个例子
在幼儿园呢有很多小宝宝对吧,现在有个小宝宝(程序或者线程)不开心,哭了。其他小宝宝受到这个小宝宝情绪感染,陆续开始哭,这时你(CPU)要快速把一个小玩具递给一个正在哭的小宝宝,他有了小玩具就不哭了。理论上只要你够快(CPU执行速度),谁哭就把这个小玩具送给谁,就没有小宝宝哭了,这就是并发。并行就是多了几个幼师,每个幼师都送给各自宝宝一个玩具,每个宝宝现在都有玩具了,这就是并行。
写完喽!ㄟ(▔,▔)ㄏㄟ(▔,▔)ㄏㄟ(▔,▔)ㄏ
知识重在总结和梳理,只有不断地去学习并运用,才能化为自己的东西。当你能为别人讲明白的时候,说明自己已经掌握了。
欢迎转载,转载请注明出处!
如果有错误的地方,或者有您的见解,还请不啬赐教!
喜欢的话,麻烦点个赞!