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


    一、 进程:process

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

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

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


    二、 线程:thread

        依赖于进程

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

        轻量级的进程

    三、 协程:coroutine

    轻量级的线程

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

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

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

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

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

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

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

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

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

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

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

    五、线程和协程总结:

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

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

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

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

  • 相关阅读:
    力扣刷题day42|121买卖股票的最佳时机、122买卖股票的最佳时机II
    vue3+ts+uniapp实现小程序端input获取焦点计算上推页面距离
    基于支持向量机的网络⼊侵检测系统的全面调查和分类
    质量平台-sonarlint-接入项目gitlab配置
    远程控制软件
    自动驾驶入门必须要学会的ADAS(详解)
    顾客为什么不到店了
    Linux相关概念及常见指令
    pytorch入门,deep-learning-for-image-processing-master的test3-vggnet
    层次查询和分析函数(LAG、LEAD)在号段选取中的应用
  • 原文地址:https://blog.csdn.net/m0_58679504/article/details/126331678