【并发面试题】进程,线程?并行,并发?

1.进程和线程的关系?

  • 从数量来看:一个程序至少一个进程,一个进程可以有多个线程。

举例来说:JAVA当我们启动main函数就启动了一个JVM进程,而main函数所在的线程就是该进程所属的线程,也叫主线程,当然也可以开启多个线程。

  • 从资源来看:进程是程序向操作系统申请资源(如内存空间和文件句柄)的基本单位。线程是进程中可单独执行的最小单位。同一个进程中的所有线程共享该进程的资源(如内存空间和文件句柄)

举例来说:main函数就启动了一个JVM进程,会创建所有线程共享堆和方法区资源,同时每个线程拥有自己的资源,程序计数器,方法栈。
在这里插入图片描述
最后线程所要完成的工作叫任务

2. 并发,并行,傻傻分不清?

先看这个图:
在这里插入图片描述

  • 从软件的角度来看:并发就是在一段时间内以交替形式完成多个任务。而并行就是齐头并进的方式完成多个任务。
  • 从硬件的角度来看:处理器一次只能运行一个线程,如果要实现 同一段时间内运行多个线程(并发),处理器是以时间片分配的技术来实现的,即给每个线程分配时间片,时间片结束,保存该线程状态,线程切换,执行下一个时间片的线程。而如果要实现并行,一个处理器不行,需要在同一时刻,多个处理器各自处理一个线程。
发布了34 篇原创文章 · 获赞 0 · 访问量 1089

猜你喜欢

转载自blog.csdn.net/qq_42634696/article/details/105023023