zoukankan      html  css  js  c++  java
  • 进程?线程?协程?

    进程和线程的关系?

    线程是进程中的一个实体,线程本身是不会独立存在的。进程是操作系统进行资源分配和调度的基本单位,线程则是进程的一个执行路径,一个进程中至少有一个线程,进程中的多个线程共享进程的资源。操作系统在分配资源时是把资源分配给进程的,但是CPU比较特殊,它是分配给线程的,因为真正要占用CPU运行的是线程,所以也说线程是CPU分配的基本单位

    在Java中,当我们启动main函数时其实就启动了一个JVM的进程,而main函数所在的线程就是这个进程中的一个线程,也称主线程

    进程和线程的关系图如下

     由图可知,一个进程中有多个线程,多个线程共享进程的堆和方法区资源,但是每个线程有自己的程序计数器和栈区域

    堆、方法区、程序计数器和栈的内容属于JVM 的内存布局(内存结构)的知识,可以查看我的另一篇博文——JVM--内存结构,谢谢

    协程?

    协程就像非常轻量级的线程。线程切换或线程阻塞的开销都比较大。协程依赖于线程,但是协程挂起时不需要阻塞线程,几乎是无代价的,协程是由开发者控制的。所以协程也像用户态的线程,非常轻量级,一个线程中可以创建任意个协程

    协程占用的内存小,大概1-2KB左右,线程占用内存大概1MB。

     参考

    《Java并发编程之美》翟陆续

    希望本文章对您有帮助,您的转发、点赞是我的创作动力,十分感谢。更多好文推荐,请关注我的微信公众号--JustJavaIt
  • 相关阅读:
    第16课 更新和删除数据
    第15课 插入数据
    第14课 组合查询
    第13课 创建高级联结
    第12课 联结表
    第11课 使用子查询
    第10课 分组数据
    第9课 汇总数据
    Python办公自动化 | EXCEL读取和写入
    test
  • 原文地址:https://www.cnblogs.com/liaowenhui/p/15442902.html
Copyright © 2011-2022 走看看