并发最基本要理解的进程、线程、协程

一、进程

1.什么是进程?

进程是操作系统进行资源分配和调度的基本概念,可以说进程是线程的容器,一个进程里包括数据区域和堆栈存储着活动过程调用的指令和本地的变量,进程没运行时候处于没有生命的一个实体的状态,运行时依赖处理器给他活体状,一个进程至少有一个线程,如果没有的话那么这个线程就是它本身。

一、多进程的概念

理论上一个CPU只能给一个进程,如果想一个CPU运行多个进程的话,那就是多进程,就要使用并发技术,实现并发技术非常复杂,说一下简单的并发技术 "时间片轮转进程调度算法" 在操作系统的管理下,所有正在运行的进程轮流使用CPU,每个进程允许占用CPU的时间非常短(比如10ms),这样用户根本感觉不出来 CPU是在轮流为多个进程服务,但实际上在任何一个时间内有且仅有一个进程占有CPU。 如果一台计算机有多个CPU,情况就不同了,如果进程数大于CPU数的时候,使用这种并发技术。目前都是几核的CPU都能够处理。

同时,这两种上下文切换的处理都是通过操作系统内核来完成的。内核的这种切换过程伴随的最显著的性能损耗是将寄存器中的内容切换出。

2.什么是线程?

线程是程序执行流的最小单元,一个线程的信息包括(线程ID,指令集合,堆栈组)组成的线程这种单位,上面进程提到进程是线程的一个容器,说明线程运行在进程里面的,那就是运行在进程里面的一个实体,它不拥有系统资源,但它拥有进程的资源。

一、线程的三种状态

1.就绪状态:

是指线程具备运行的所有条件,逻辑上可以运行,在等待处理机的过程。

2.阻塞状态:

是指线程在等待某一个事件(信号量)。

3.运行状态:

是指线程占有处理机正在运行。

二、多线程

同时运行多个线程完成不同的工作,就叫做多线程,使用多线程的好处有:

1.资源利用率更好: 想象一下,一个应用程序需要从本地文件系统中读取和处理文件的情景。比方说,从磁盘读取一个文件需要5秒,处理一个文件需要2秒。处理两个文件则需要14s,在这段时间里,CPU非常的空闲,它可以做一些别的事情,那么我们使用多个线程的话,是不是可以处理文件的同时去读取新的文件,这样就提高了时间效率,

2.程序响应更快:假设做某一个服务的时候,它在某一个端口监听进来的请求,当一个请求到来时,它去处理这个请求,然后再返回去监听。

3.程序设计简单

做多线程的时候运用多线程的技术设计非常简单易用,遵循好一些规则,避免造成阻塞等操作,基本可以很快设计程序的需求。

4.使用场景:

多线程:密集I/O任务(网络I/O,磁盘I/O,数据库I/O)使用多线程合适。

三、线程与线程主要依靠什么通信

线程间通信主要通过共享内存

3.什么是协程?

一个程序可以包含多个协程,线程相对独立有自己的上下文,协程也是,但是协程由自己控制,不受操作系统控制,可以不加锁的访问全局变量,所以上下文的切换非常快,可以说是轻量级的线程,也可以说称之为用户级别的线程就叫协程,一个线程可以多个协程,一个进程也可以单独拥有多个协程,线程进程都是同步机制,而协程则是异步。

1.使用场景:

又称微线程,在单线程上执行多个任务,用函数切换,开销极小。不通过操作系统调度,没有进程、线程的切换开销。genventmonkey.patchall

多线程请求返回是无序的,那个线程有数据返回就处理那个线程,而协程返回的数据是有序的,处理磁盘的I/O比较慢,处理网络I/O性能还是比较高。

4.进程线程上下文切换

顺便说一下上下文切换上下文切换就是从当前执行任务切换到另一个任务执行的过程。但是,为了确保下次能从正确的位置继续执行,在切换之前,会保存上一个任务的状态。进程上下文切换与线程上下文切换最主要的区别就是线程的切换虚拟空间内存是相同的(因为都是属于自己的进程),但是,进程切换的虚拟空间内存则是不同的。同时,这两种上下文切换的处理都是通过操作系统内核来完成的。

【写在最后】

工作一到五年的程序员朋友面对目前的技术无从下手,感到很迷茫可以加群978730098,领取java相关资料及视频,里面有阿里Java高级大牛直播讲解知识点,分享知识,课程内容都是各位老师多年工作经验的梳理和总结,带着大家全面、科学地建立自己的技术体系和技术认知!

最后祝那些积极向上的程序猿们好好学习、天天向上,早日打破牢笼,展望更高层次的世界。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,236评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,867评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,715评论 0 340
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,899评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,895评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,733评论 1 283
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,085评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,722评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,025评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,696评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,816评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,447评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,057评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,009评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,254评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,204评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,561评论 2 343

推荐阅读更多精彩内容