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


    一、 进程:process

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

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

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


    二、 线程:thread

        依赖于进程

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

        轻量级的进程

    三、 协程:coroutine

    轻量级的线程

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

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

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

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

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

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

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

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

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

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

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

    五、线程和协程总结:

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

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

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

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

  • 相关阅读:
    【Linux】 OpenSSH_7.4p1 升级到 OpenSSH_9.3p2(亲测无问题,建议收藏)
    【计算机网络】TCP 的三次握手与四次挥手
    Linux系统常用的工具
    Selenium教程(1)选择和查找基本元素
    码农的转型之路-PLC异地组网与远程控制
    大数据之Hive
    【复现】蓝凌OA SQL注入漏洞_61
    spring常考知识点总结
    10个必备的 async/await 工具函数
    sparksql数据倾斜那些事儿
  • 原文地址:https://blog.csdn.net/m0_58679504/article/details/126331678