多线程

来源:互联网 发布:ie11不支持js 编辑:程序博客网 时间:2024/06/06 02:02

了解多线程之前 首先说一下 程序 进程 和 线程的区别啊


程序我们都知道,它是一连串的动也不动的指令集,不来也不去,静静的做个美男子让机器去解析.

而进程呢, 我们的机器 我们的操作系统要运行,需要调度上面的程序,既然有调度的这个动作,那听上去他就是一个动态的概念.

而线程 就是在进程内的多条执行路径,也就是说在一个进程内 可能有多个程序需要调度,那就有多条线程,

就好比我们要去灌溉一片农田, 我们首先要有一个进程开启,要行动起来,而期间呢,有需要铺设水袋的人,有需要配备农机的人,有需要观看农田的人,这些可能协同在这一个进程中.

总结就是在进程内开辟多条线程.   比如 在一个类里面 有 a ,b,c三个方法,a 执行的同时,b和c 也可以进行.而不是 a执行完 b才能执行.


进程是程序的一次动态执行过程,他占用一定的地址空间.

每个进程都是独立的,有三部分组成:cpu\data\code

缺点:内存浪费,cpu的负担

so 开辟线程,其实就是一个轻量级的进程,因为它也是开辟了一条单一的路径的.

所以一个进程可以拥有多个并行的线程.


一个进程中的线程共享相同的内存单元,内存地址空间->可以访问相同的变量和对象,而且他们从同一堆中分配对象->通信 数据交换 同步操作

但这有可能对统一资源进行征用,会出现并发性问题.



进程和线程的区别:  官方说法

根本区别:进程是作为资源分配的单位, 线程是调度和执行的单位.


从开销上来说:每个进程都有独立的代码和数据空间(进程上下文),进程间的切换会有较大开销.   线程可看成是轻量级的进程,同一类线程共享代码和数据空间. 每个线程都有独立的运行栈 和 程序计数器(pc),线程切换的开销小.


所处环境:在操作系统中能同时运行多个任务(程序)    线程 ->在同意应用程序中有多个的有顺序的执行代码.


分配内存:系统在运行的时候 为不同的进程分配不同的内存空间.     除了cpu以外   不会为线程在分配内存,因为本身线程就是在进程内,他们只是共享这些内存资源


包含关系:没有线程的进程是可以被看作单线程的,如果一个进程内有多个线程,那么执行过程不是一条线的,是多条线共同完成的.

                   线程是进程的一部分,所以线程有的时候被称为是轻量级的进程.




0 0
原创粉丝点击