首页 > 其他分享 >线程的查看方式&运行原理

线程的查看方式&运行原理

时间:2022-10-26 09:22:57浏览次数:54  
标签:Java 查看 PID 线程 进程 原理 栈帧

观察多个线程同时运行

主要是理解

  • 交替执行
  • 谁先谁后,不由我们控制

查看进程线程的方法

windows

  • 任务管理器可以查看进程和线程数,也可以用来杀死进程
  • tasklist 查看进程
  • taskkill 杀死进程

linux

  • ps -fe 查看所有进程
  • ps -fT -p <PID> 查看某个进程(PID)的所有线程
  • kill杀死进程
  • top 按大写 H 切换是否显示线程
  • top -H -p <PID> 查看某个进程(PID)的所有线程

Java

  • jps 命令查看所有 Java 进程
  • jstack <PID> 查看某个 Java 进程(PID)的所有线程状态
  • jconsole 来查看某个 Java 进程中线程的运行情况(图形界面)

原理之线程运行

栈与栈帧

Java Virtual Machine Stacks (Java 虚拟机栈)

我们都知道 JVM 中由堆、栈、方法区所组成,其中栈内存是给谁用的呢?其实就是线程,每个线程启动后,虚拟 机就会为其分配一块栈内存。

  • 每个栈由多个栈帧(Frame)组成,对应着每次方法调用时所占用的内存
  • 每个线程只能有一个活动栈帧,对应着当前正在执行的那个方法

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

因为以下一些原因导致 cpu 不再执行当前的线程,转而执行另一个线程的代码

  • 线程的 cpu 时间片用完
  • 垃圾回收
  • 有更高优先级的线程需要运行
  • 线程自己调用了 sleep、yield、wait、join、park、synchronized、lock 等方法

当 Context Switch 发生时,需要由操作系统保存当前线程的状态,并恢复另一个线程的状态,Java 中对应的概念就是程序计数器(Program Counter Register),它的作用是记住下一条 jvm 指令的执行地址,是线程私有的

  • 状态包括程序计数器、虚拟机栈中每个栈帧的信息,如局部变量、操作数栈、返回地址等
  • Context Switch 频繁发生会影响性能

标签:Java,查看,PID,线程,进程,原理,栈帧
From: https://www.cnblogs.com/LoveBB/p/16827119.html

相关文章

  • 彻底理解闭包实现原理
    前言闭包对于一个长期写Java的开发者来说估计鲜有耳闻,我在写Python和Go之前也是没怎么了解,光这名字感觉就有点"神秘莫测",这篇文章的主要目的就是从编译器的角度来......
  • Java多线程(3):ThreadPool(下)
    您好,我是湘王,这是我的博客园,欢迎您来,欢迎您再来~ 除了可以通过ThreadPoolExecutor自定义线程池外,同StreamAPI中的Collectors一样,多线程里的Executors类也提供了一组相关......
  • 多线程应用——双色球
    通过多线程实现双色球选号,要求:1、红球从01到33不能有重复;2、蓝球从1到16效果如下:    难点: 1、多线程实现 2、跨线程修改UI 3、线程安全(红球不能有重......
  • java dump 线程命令 jstack PID >> mydumps.dump
    一、背景Java应用怎么通过方法定位到代码的具体步骤,下面通过一个具体的例子来说明。二、分析步骤使用TOP命令找到谁在消耗CPU比较高的进程,例如:pid=1232使用top-p......
  • 《上下文切换 —— 进程上下文切换、线程上下文切换、中断上下文切换》
    一文带你深入理解LinuxCPU上下文切换(超详细~)-哔哩哔哩(bilibili.com)(37条消息)Linux进程上下文概念详解_奔跑的码农的博客-CSDN博客_linux进程上下文(37条消息)Li......
  • 微服务 Zipkin 链路追踪原理(图文详解)
    一个看起来很简单的应用,可能需要数十或数百个服务来支撑,一个请求就要多次服务调用。当请求变慢、或者不能使用时,我们是不知道是哪个后台服务引起的。这时,我们使用 Zip......
  • 记录--从原理分析vue开发环境搭建的全部过程
    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助平时大家开发vue项目的时候,相信大部分人都是使用vue-cli脚手架生成的项目架构,然后npmruninstall安装......
  • Nginx02 Nginx的的目录结构、基本工作原理、基本配置文件介绍
    1 Nginx目录结构1.1简要介绍 [root@localhost~]#tree/usr/local/nginx/usr/local/nginx├──client_body_temp#POST大文件暂存目录├......
  • Windows下查看电脑的CPU个数,核心数,线程数
    总核数=物理CPU个数X每颗物理CPU的核数总逻辑CPU数=物理CPU个数X每颗物理CPU的核数X超线程数查看物理CPU的个数:在cmd命令中输入“systeminfo”主机名:......
  • Java多线程(3):ThreadPool(中)
    您好,我是湘王,这是我的51CTO博客,欢迎您来,欢迎您再来~线程池是个神器,用得好会非常地方便。本来觉得线程池的构造器有些复杂,即使讲清楚了对今后的用处可能也不太大,因为有一些Jav......