多线程part9——线程运行原理

栈和栈帧

  JVM由堆、栈、方法区;栈内存就是给线程使用,当每个线程启动后,虚拟机就会为其分配一块栈内存

  每个栈由多个栈帧(Frame)组成,对应每调用一次方法调用时所占用的内存

  每个线程中只能有一个活动栈帧,对应当前正在执行的方法

 

线程上下文切换(Thread Context Switch)

  由于一些情况,CPU不再执行当前的线程,转而执行另一个线程的代码

  被动:1.线程的CPU时间片用完,将使用权交给其他线程

     2.垃圾回收

     3.有更高优先级的线程需要运行

  主动:线程自己调用了sleep、yield、wait、join、park、synchronized、lock等方法

 

  当上下文切换发生时,需要由操作系统保存当前线程的状态,并恢复另一个线程的状态

  java中对应的概念是程序计数器(Program Counter Register)作用是记住下一条jvm指令的执行地址,是线程私有的

  ——状态包括程序计数器、虚拟机栈中每个栈帧的信息,如局部变量、操作数栈、返回地址等

  ——Context Switch 频繁发生会影响性能,这使得要选择合适的线程数,以避免这种情况的发生

posted @   名泽  阅读(12)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报

阅读目录(Content)

此页目录为空

点击右上角即可分享
微信分享提示