java基础-多线程常用方法

一、查看进程线程的方法

1.1 windows查看进程线程的方法

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

1.2 linux查看进程线程的方法

  • ps -ef 查看所有进程
  • ps -ft -p 查看某个进程(PID)的所有线程
  • kill 杀死进程
  • top -H -p 查看某个进程(PID)的所有线程

1.3 java查看进程线程的方法

  • jps 命令查看所有Java进程
  • jstack 查看某个Java进程(PID)的所有线程

二、线程运行的原理

2.1 栈与栈帧

栈全称java virtual  machine stacks(java虚拟机栈)

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

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

2.2 线程上下文切换

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

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

你可能感兴趣的:(java,开发语言,jvm)