• java基础面试题:说说协程,进程和线程的区别和联系


    1. 进程的定义

    1. 进程是程序的一次执行
    2. 进程是一个程序及其数据在处理机上顺序执行时所发生的活动
    3. 进程是具有独立功能的程序在一个数据集合上运行的过程,它是系统进行资源分配和调度的一个独立单位。

    2. 线程的定义

    简单来说:线程是处理器调度和分配的基本单位

    1. 线程是指进程内的一个执行单元,也是进程内的可调度实体。
    2. 线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。
    3. 线程自己基本上不拥有系统资源

    3. 协程的定义

    1. 协程是一种用户态的轻量级线程
    2. 协程不是被操作系统内核所管理,而完全是由程序所控制
    3. 协程拥有自己的寄存器上下文和栈。

    4. 线程与进程的区别:

    具体有以下5点区别:

    1. 调度的基本单位
      线程才是调度和分配的基本单位,所以线程是能独立运行的基本单位。
    2. 并发性
      进程之间可以并发执行,而且同一个进程或者不同进程之间的多个线程之间也可并发执行。
    3. 拥有资源
      进程可以拥有资源,并作为系统中拥有资源的一个基本单位,但是线程不能拥有系统资源,而是仅有一点必不可少的、能保证独立运行的资源。
    4. 独立性
      每个进程都拥有一个独立的地址空间,但是同一进程中的不同线程往往共享进程的内存地址空间和资源。因此线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。
    5. 系统开销
      线程的创建要比进程的创建快30倍,线程的上下文切换要比进程上下文的切换快5倍,所以进程的系统开销大。

    5. 协程和线程的区别

    1. 协程的切换者是用户(编程者或应用程序),切换时机是用户自己的程序所决定的。
    2. 协程的切换内容是硬件上下文,切换内存保存在用户自己的变量(用户栈或堆)中。
    3. 协程的切换过程只有用户态,即没有陷入内核态,因此切换效率高。
  • 相关阅读:
    DCloud之Android原生工程配置
    多目标跟踪框架boxmot介绍
    配置静态IP地址(centos和ubuntu)
    08_聚合函数
    卷运维不如卷网络安全
    Java:实现DoubleHashing双哈希测试算法(附完整源码)
    基于Qlearning强化学习的机器人路线规划仿真
    Mybatis-Plus报错:can not use this method for “getSqlSet“ | 带你从源码层面解析异常
    新库上线 | CnOpenData电力、热力、燃气及水生产和供应业工商注册企业基本信息数据
    1. Java并发编程-Java内存模型
  • 原文地址:https://blog.csdn.net/m0_47010003/article/details/126877857