博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
进程和线程
阅读量:5811 次
发布时间:2019-06-18

本文共 949 字,大约阅读时间需要 3 分钟。

举例来说:程序员为女儿做蛋糕。

1、程序员需要食谱,食谱上写出了需要哪些原料,如何做。食谱就是程序,原料就是数据,程序员就是CPU。程序员按照食谱、对原料进行加工,做蛋糕的过程就相当于CPU执行代码、操作数据的过程。做蛋糕的过程就是进程。

2、做蛋糕可以分为几个小的步骤,这些步骤共同加工原料。每个小的步骤就是一个线程。比如做蛋糕进程可以分为以下几个线程:取原料(包括鸡蛋、面粉、奶油、糖、水等),混合原料,烘烤混合物。这些步骤之间存在一定的先后关系和互斥关系,比如:混合原料必须在取原料之后,二者不能同时进行。

3、假设程序员做蛋糕的时候,淘气的儿子跑进来,对爸爸说,被蜜蜂蛰了(相当于进来一个优先级更高的进程)。这时候,程序员就会暂停做蛋糕,同时记录做到了哪一步。然后拿出急救说明书(另一段程序),急救箱(另一端程序的数据),处理儿子的蛰伤(另一个进程)。处理完毕后,程序员接着原来的步骤继续做蛋糕。

 

 

1、进程是操作系统进行资源分配和调度的基本单位,线程是CPU调度的基本单位,是进程中一个单一顺序的执行流。

2、把进程当成做一件事情,操作系统管理进程,负责调度进程。具体怎么做?是进程的事。一个进程至少有一个主线程,可以有多个辅助线程,真正做事的是线程。进程做的事情:可以是一个线程按顺序一步一步做,也可以启动多个线程,协作完成。

3、进程有一块内存,也就是可执行文件装载到操作系统中,从上到下大致为:栈,堆,全局存储区,常量存储区,代码区。而线程可以认为是一个执行流,每个线程都有一个自己的调用堆栈,可以访问进程中的资源,对于共享资源需要进行同步控制。而一个进程是不能访问另一个进程的资源,只能通过进程间的通信传递数据。

4、进程之间的切换代价大,而线程之间的切换代价小。

5、多线程的使用场景:

  a、对于UI界面,如果执行一个耗时的操作,为了让界面及时响应,可以重启一个线程,去执行。

  b、同时有多个请求,可以创建一个线程池,来一个请求,从线程池中拿出一个空闲的线程处理。

  c、对于网络数据的接受,创建一个线程用于接受数据,接受的数据保存在本地,处理之后一个一个转发出去。

转载于:https://www.cnblogs.com/java2016/p/5537983.html

你可能感兴趣的文章
【IL】IL生成exe的方法
查看>>
network
查看>>
SettingsNotePad++
查看>>
centos7安装cacti-1.0
查看>>
3个概念,入门 Vue 组件开发
查看>>
没有JS的前端:体积更小、速度更快!
查看>>
数据指标/表现度量系统(Performance Measurement System)综述
查看>>
GitHub宣布推出Electron 1.0和Devtron,并将提供无限制的私有代码库
查看>>
Angular2, NativeScript 和 React Native比较[翻译]
查看>>
论模式在领域驱动设计中的重要性
查看>>
国内首例:飞步无人卡车携手中国邮政、德邦投入日常运营
查看>>
微软将停止对 IE 8、9和10的支持
查看>>
微服务架构会和分布式单体架构高度重合吗
查看>>
如何测试ASP.NET Core Web API
查看>>
《The Age of Surge》作者访谈
查看>>
测试人员的GitHub
查看>>
Spring Web Services 3.0.4.RELEASE和2.4.3.RELEASE发布
查看>>
有关GitHub仓库分支的几个问题
查看>>
无服务器计算的黑暗面:程序移植没那么容易
查看>>
云原生的浪潮下,为什么运维人员适合学习Go语言?
查看>>