多线程
来源:互联网 发布:ie11不支持js 编辑:程序博客网 时间:2024/06/06 02:02
了解多线程之前 首先说一下 程序 进程 和 线程的区别啊
程序我们都知道,它是一连串的动也不动的指令集,不来也不去,静静的做个美男子让机器去解析.
而进程呢, 我们的机器 我们的操作系统要运行,需要调度上面的程序,既然有调度的这个动作,那听上去他就是一个动态的概念.
而线程 就是在进程内的多条执行路径,也就是说在一个进程内 可能有多个程序需要调度,那就有多条线程,
就好比我们要去灌溉一片农田, 我们首先要有一个进程开启,要行动起来,而期间呢,有需要铺设水袋的人,有需要配备农机的人,有需要观看农田的人,这些可能协同在这一个进程中.
总结就是在进程内开辟多条线程. 比如 在一个类里面 有 a ,b,c三个方法,a 执行的同时,b和c 也可以进行.而不是 a执行完 b才能执行.
进程是程序的一次动态执行过程,他占用一定的地址空间.
每个进程都是独立的,有三部分组成:cpu\data\code
缺点:内存浪费,cpu的负担
so 开辟线程,其实就是一个轻量级的进程,因为它也是开辟了一条单一的路径的.
所以一个进程可以拥有多个并行的线程.
一个进程中的线程共享相同的内存单元,内存地址空间->可以访问相同的变量和对象,而且他们从同一堆中分配对象->通信 数据交换 同步操作
但这有可能对统一资源进行征用,会出现并发性问题.
进程和线程的区别: 官方说法
根本区别:进程是作为资源分配的单位, 线程是调度和执行的单位.
从开销上来说:每个进程都有独立的代码和数据空间(进程上下文),进程间的切换会有较大开销. 线程可看成是轻量级的进程,同一类线程共享代码和数据空间. 每个线程都有独立的运行栈 和 程序计数器(pc),线程切换的开销小.
所处环境:在操作系统中能同时运行多个任务(程序) 线程 ->在同意应用程序中有多个的有顺序的执行代码.
分配内存:系统在运行的时候 为不同的进程分配不同的内存空间. 除了cpu以外 不会为线程在分配内存,因为本身线程就是在进程内,他们只是共享这些内存资源
包含关系:没有线程的进程是可以被看作单线程的,如果一个进程内有多个线程,那么执行过程不是一条线的,是多条线共同完成的.
线程是进程的一部分,所以线程有的时候被称为是轻量级的进程.
- 多线程
- 多线程
- 多线程
- 多线程
- 多线程
- 多线程
- 多线程
- 多线程
- 多线程
- 多线程
- 多线程
- 多线程
- 多线程
- 多线程
- 多线程
- 多线程
- 多线程
- 多线程
- 硬件基础
- 【面试】Liveramp 面试题 面经 青蛙过河问题
- Mvc中url地址栏base64加密
- Vulkan Programming Guide翻译计划
- 最长不下降子序列问题
- 多线程
- 安卓-绑定服务与解绑服务
- 棋牌游戏API接口——大雄游戏
- 关于Handler导包问题
- 存储类型与标识符的生命期
- 最简单实现跨域的方法:使用nginx反向代理
- 插入排序的一种实现方法,欢迎批评指正!
- AngularJs ng-bind-html指令整理
- photoshop第六章:图片效果的制作