• java编程基础总结——28.进程、线程、协程


    一、 进程:process

        操作系统的基本单位
        直接申请独立的内存
        操作系统管理资源和任务的基本单位

    如果通过网络,每个进程会占据一个端口,可以理解成一个软件,进程有独立的内存空间

    把操作系统理解成一个小区,那么进程就相当于一户户人家


    二、 线程:thread

        依赖于进程

        线程是最小量级的进程(是进程的子元素)

        轻量级的进程

    三、 协程:coroutine

    轻量级的线程

    协程是一种用户态的轻量级线程,协程的调度完全由用户控制。

    协程不是进程或线程,其执行过程更类似于子例程,或者说不带返回值的函数调用。

    四、线程和进程总结及选择:

    1. 依赖于进程,一个进程可以有多个线程,也可以有多个线程

    2. 都可以处理高并发,但是进程是向操作系统直接去申请的,重量级的,所以释放和创建,效率低

    而线程是依赖于进程的,不需要向操作系统申请,cpu调度执行,速度较快。一般情况下优先选择线程进行高并发编程

    3. 进程具有独立性,每个进程有自己的虚拟地址空间,一个进程挂了不会影响其他进程。如qq挂了,不会影响微信(两个独立进程)

    一个线程挂了,可能影响其他进程,甚至导致整个进程崩溃

    因此对安全稳定性要求较高时,需要优先选择进程进行高并发编程。

    4. 进程 资源消耗大,效率较低,但是比较稳定

       线程资源消耗小,效率较高,但是稳定性较差

    五、线程和协程总结:

    1.   一个线程可以多个协程,一个进程也可以单独拥有多个协程

    2.  线程进程都是同步机制,而协程则是异步机制

    3. 多个线程相对独立,有自己的上下文,切换受系统控制;而协程也相对独立,有自己的上下文,但是其切换由自己控制,由当前协程切换到其他协程由当前协程来控制。

    4.  协程是用户态的轻量级线程,不受内核调度;线程是任务调度和系统执行的最小单位,需要内核调度。

  • 相关阅读:
    05-流媒体-摄像头采集YUV
    面试时,碰到职场“送命题”该怎么回答?送上这些有求生欲的答案~
    CSS 滚动捕获 scroll-snap-type
    JSON.stringify()与Qs.stringify()区别 应用场景
    卷不动了,还卷吗?
    2023-09-16力扣每日一题-经典DP
    CalcPad(2) 单位设置和绘制图表
    Java入门——this()/super()
    【深度学习】基于tensorflow的服装图像分类训练(数据集:Fashion-MNIST)
    Add AV1 Hardware Encoding + Decoding to Your App
  • 原文地址:https://blog.csdn.net/m0_58679504/article/details/126331678