程序、进程、线程的区别
关于这个题目,面试官希望你有的是一个对这3个东西的理解,并不是让你死记硬背一些理论知识,比如
可以跳过本段
一、进程
进程是指在系统中正在运行的一个应用程序,程序一旦运行就是进程。
进程是系统进行资源分配的独立实体, 且每个进程拥有独立的地址空间。
一个进程可以拥有多个线程,每个线程使用其所属进程的栈空间。
二、线程
线程是进程的一个实体,是进程的一条执行路径。
线程是CPU独立运行和独立调度的基本单位。
三、多线程
多线程是指从软件或者硬件上实现多个线程的并发技术
我的理解是用一个常用的软件的执行过程来说明这3个东西就好了,简单易懂
举例:QQ 或者暴风影音
程序
QQ、暴风影音本身是个程序,静态的,不动的。
进程
双击打开之后,就变成了应用程序,有一个进程号,在系统里有一个空间
比如linux常用的kill -9 windows常用的结束进程,就是这个东西。
线程
当你使用QQ时,需要发一个消息给对方
当你使用暴风影音时,会一遍播放图片,一遍发出声音
这种发消息及放图片及声音,就是启动了一个线程来做这个事情
我觉得说到以上这样,其实应该就已经把这个事情说得很清楚了
还有那种马路的概念
比如马路是一个进程,来来往往的车道是线程,等等,也是不错的回答方式。
我个人是觉得既简单又能说明问题,如果有好的回答可以在评论区留言。