• 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. 协程的切换过程只有用户态,即没有陷入内核态,因此切换效率高。
  • 相关阅读:
    LeetCode_730_每日温度
    SQL Server、MySQL主从搭建,EF Core读写分离代码实现
    alibaba fastjson的JsonObject有序的实现和源码分析
    sftp文件上传uploadFile
    【Android-Jetpack进阶】6、WorkManager 后台线程、一次性、周期性、任务链的 Work
    使用 mapstructure 解析 json
    华为OD机考:0039-0040:url地址、序列描述
    【代码随想录】算法训练营 第十八天 第六章 二叉树 Part 5
    解决谷歌学术bib信息不全的问题
    OpenCore引导都支持哪些.efi文件
  • 原文地址:https://blog.csdn.net/m0_47010003/article/details/126877857