「java」线程 & 进程

这里来区分一下线程和进程

进程:

  • 每个进程都有独立的代码和数据空间(进程上下文)
  • 进程间的切换会有较大的开销
  • 一个进程包含1--n个线程。
  • 进程是资源分配的最小单位

 

线程:

  • 同一类线程共享代码和数据空间(因为多线程组成进程,如果进程是资源分配的最小单位,那么线程之间彼此共享资源就很好理解)
  • 每个线程有独立的运行栈和程序计数器(PC)
  • 线程切换开销小。
  • 线程是cpu调度的最小单位(众所周知,线程在start后,不一定那是run,什么时候run取决于系统的调用)

 

  线程和进程一样分为五个阶段:创建、就绪、运行、阻塞、终止。

  多进程是指操作系统能同时运行多个任务(程序)。多线程是指在同一程序中有多个顺序流在执行。

 

例子:

下面是我类比两个概念和生活中的实例,进行的举例,欢迎指出错误!!

进程可以想象成做一件事。比如有一个项目组,现在有两个项目要开发(一个online store的网站、一个教育评估系统)

开发网站或者开发系统是两件单独独立的事情,把整个项目组想象成计算机的话,那么这两件事就可以看成是要执行的两个进程。

在online store的网站中, 肯定有很多的个模块需要被开发,比如登录功能和搜索功能。所以开发登录功能就是可以看成是一个线程。而如果现在项目经理只分配了一个开发人员来开发这 两个功能,那么这个开发人员就是这两个线程的共享资源。

 

参考:https://www.cnblogs.com/yjd_hycf_space/p/7526608.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章