1. jps:列出正在运行的进程的pid, pname
  2. jstack -l pid: 列出某个进程内的线程,包含用户线程,守护线程和其它线程,守护线程有编译线程和引用处理线程
C:\Users\DELLOR>jps
5412 BootLanguagServerBootApp
10460 PipedIODemo
16140
17964 JpsC:\Users\DELLOR>jstack -l 10460
2022-01-29 20:53:48
Full thread dump Java HotSpot(TM) 64-Bit Server VM (25.261-b12 mixed mode):"DestroyJavaVM" #13 prio=5 os_prio=0 tid=0x00000247c1691000 nid=0x5f8 waiting on condition [0x0000000000000000]java.lang.Thread.State: RUNNABLELocked ownable synchronizers:- None"recieve" #12 prio=5 os_prio=0 tid=0x00000247d969d800 nid=0x38c8 in Object.wait() [0x000000c3029ff000]java.lang.Thread.State: TIMED_WAITING (on object monitor)at java.lang.Object.wait(Native Method)- waiting on <0x00000000d64b3280> (a java.io.PipedInputStream)at java.io.PipedInputStream.read(Unknown Source)- locked <0x00000000d64b3280> (a java.io.PipedInputStream)at java.io.PipedInputStream.read(Unknown Source)- locked <0x00000000d64b3280> (a java.io.PipedInputStream)at java.io.InputStream.read(Unknown Source)at iopart.Recieve.run(PipedIODemo.java:61)at java.lang.Thread.run(Unknown Source)Locked ownable synchronizers:- None"send" #11 prio=5 os_prio=0 tid=0x00000247d969c800 nid=0x305c runnable [0x000000c3028fe000]java.lang.Thread.State: RUNNABLEat java.io.FileInputStream.readBytes(Native Method)at java.io.FileInputStream.read(Unknown Source)at java.io.BufferedInputStream.read1(Unknown Source)at java.io.BufferedInputStream.read(Unknown Source)- locked <0x00000000d6359a98> (a java.io.BufferedInputStream)at sun.nio.cs.StreamDecoder.readBytes(Unknown Source)at sun.nio.cs.StreamDecoder.implRead(Unknown Source)at sun.nio.cs.StreamDecoder.read(Unknown Source)- locked <0x00000000d645ac98> (a java.io.InputStreamReader)at java.io.InputStreamReader.read(Unknown Source)at java.io.Reader.read(Unknown Source)at java.util.Scanner.readInput(Unknown Source)at java.util.Scanner.next(Unknown Source)at iopart.Send.run(PipedIODemo.java:27)at java.lang.Thread.run(Unknown Source)Locked ownable synchronizers:- None"Service Thread" #10 daemon prio=9 os_prio=0 tid=0x00000247d830e800 nid=0x8b0 runnable [0x0000000000000000]java.lang.Thread.State: RUNNABLELocked ownable synchronizers:- None"C1 CompilerThread3" #9 daemon prio=9 os_prio=2 tid=0x00000247d82ee000 nid=0x3998 waiting on condition [0x0000000000000000]java.lang.Thread.State: RUNNABLELocked ownable synchronizers:- None"C2 CompilerThread2" #8 daemon prio=9 os_prio=2 tid=0x00000247d82e6800 nid=0x2344 waiting on condition [0x0000000000000000]java.lang.Thread.State: RUNNABLELocked ownable synchronizers:- None"C2 CompilerThread1" #7 daemon prio=9 os_prio=2 tid=0x00000247d82e0800 nid=0x3d94 waiting on condition [0x0000000000000000]java.lang.Thread.State: RUNNABLELocked ownable synchronizers:- None"C2 CompilerThread0" #6 daemon prio=9 os_prio=2 tid=0x00000247d82de800 nid=0x2f8c waiting on condition [0x0000000000000000]java.lang.Thread.State: RUNNABLELocked ownable synchronizers:- None"Attach Listener" #5 daemon prio=5 os_prio=2 tid=0x00000247d82de000 nid=0x2744 waiting on condition [0x0000000000000000]java.lang.Thread.State: RUNNABLELocked ownable synchronizers:- None"Signal Dispatcher" #4 daemon prio=9 os_prio=2 tid=0x00000247d82dd000 nid=0x1464 runnable [0x0000000000000000]java.lang.Thread.State: RUNNABLELocked ownable synchronizers:- None"Finalizer" #3 daemon prio=8 os_prio=1 tid=0x00000247d825a800 nid=0x32d8 in Object.wait() [0x000000c301ffe000]java.lang.Thread.State: WAITING (on object monitor)at java.lang.Object.wait(Native Method)- waiting on <0x00000000d6308ee0> (a java.lang.ref.ReferenceQueue$Lock)at java.lang.ref.ReferenceQueue.remove(Unknown Source)- locked <0x00000000d6308ee0> (a java.lang.ref.ReferenceQueue$Lock)at java.lang.ref.ReferenceQueue.remove(Unknown Source)at java.lang.ref.Finalizer$FinalizerThread.run(Unknown Source)Locked ownable synchronizers:- None"Reference Handler" #2 daemon prio=10 os_prio=2 tid=0x00000247d8239800 nid=0x2af0 in Object.wait() [0x000000c301efe000]java.lang.Thread.State: WAITING (on object monitor)at java.lang.Object.wait(Native Method)- waiting on <0x00000000d6306c00> (a java.lang.ref.Reference$Lock)at java.lang.Object.wait(Unknown Source)at java.lang.ref.Reference.tryHandlePending(Unknown Source)- locked <0x00000000d6306c00> (a java.lang.ref.Reference$Lock)at java.lang.ref.Reference$ReferenceHandler.run(Unknown Source)Locked ownable synchronizers:- None"VM Thread" os_prio=2 tid=0x00000247d8236000 nid=0x4334 runnable"GC task thread#0 (ParallelGC)" os_prio=0 tid=0x00000247c16a9000 nid=0x13bc runnable"GC task thread#1 (ParallelGC)" os_prio=0 tid=0x00000247c16aa000 nid=0x313c runnable"GC task thread#2 (ParallelGC)" os_prio=0 tid=0x00000247c16ab800 nid=0xa88 runnable"GC task thread#3 (ParallelGC)" os_prio=0 tid=0x00000247c16ae000 nid=0x1704 runnable"GC task thread#4 (ParallelGC)" os_prio=0 tid=0x00000247c16af000 nid=0x4254 runnable"GC task thread#5 (ParallelGC)" os_prio=0 tid=0x00000247c16b0000 nid=0x3458 runnable"GC task thread#6 (ParallelGC)" os_prio=0 tid=0x00000247c16b3000 nid=0x3300 runnable"GC task thread#7 (ParallelGC)" os_prio=0 tid=0x00000247c16b4000 nid=0x3284 runnable"VM Periodic Task Thread" os_prio=2 tid=0x00000247d9651000 nid=0x2c8c waiting on conditionJNI global references: 5

管道流用于线程间传输数据,创建两个线程,一个线程向管道里写入从键盘输入的数据,另一个线程从管道里读取数据,并打印至控制台。
运行的进程为PipedIODemo,在此进程中创建了两个线程,名称为"send"和"recieve",表示发送线程和接收线程。进程和线程信息可使用jps和jstack查看。

package iopart;import java.io.IOException;
import java.io.PipedInputStream;
import java.io.PipedOutputStream;
import java.util.Scanner;public class PipedIODemo {public static void main(String[] args) {Send send = new Send();Recieve recieve = new Recieve();recieve.connect(send.getOut());new Thread(send,"send").start();new Thread(recieve,"recieve").start();}
}
class Send implements Runnable{PipedOutputStream out=new PipedOutputStream();public PipedOutputStream getOut() {return out;}Scanner sc=new Scanner(System.in);@Overridepublic void run() {String next = null;while(!"end".equalsIgnoreCase(next)) {next= sc.next();try {out.write(next.getBytes());} catch (IOException e) {e.printStackTrace();}}try {if (out!=null) {out.close();}} catch (IOException e) {e.printStackTrace();}}}
class Recieve implements Runnable{PipedInputStream in=new PipedInputStream();public PipedInputStream getIn() {return in;}public void connect(PipedOutputStream out) {try {this.in.connect(out);} catch (IOException e) {e.printStackTrace();}}@Overridepublic void run() {byte[] bytes=new byte[1024];while(true) {try {in.read(bytes);System.out.println(new String(bytes));} catch (IOException e) {e.printStackTrace();}}}}

使用jps和jstack查看java的进程和线程信息相关推荐

  1. jps命令:查看Java进程等详细信息

    转载自 jps命令:查看Java进程等详细信息 jps是java自带的查看java进程的命令,通过这个命令可以查看当前系统所有运行中的java进程.java包名.jar包名及JVM参数等. jps - ...

  2. 如何查看JAVA某个进程下的线程

    微信搜索:"二十同学" 公众号,欢迎关注一条不一样的成长之路 jps -lvm jps -lvm 用于查看当前机器上运行的java进程. 可以看到所有运行的java进程都列出来了 ...

  3. Linux查看进程的线程信息

    线程是现代操作系统上进行并行执行的一个流行的编程方面的抽象概念.当一个程序内有多个线程被叉分出用以执行多个流时,这些线程就会在它们之间共享特定的资源(如,内存地址空间.打开的文件),以使叉分开销最小化 ...

  4. Java之进程与线程

    一.进程 二.线程 1.定义及特点 1)[定义]线程是一个进程内部的一条执行路径,Java虚拟机允许应用程序并发地运行多个执行路径 是系统独立调度和分派[CPU]的基本单位 2)特点 进程中执行运算的 ...

  5. Java基础-进程与线程

    文章目录 一. 进程/线程/线程上下文切换 1. 进程 2. 线程 3. 线程与进程的区别 4. 上下文 5. 寄存器 6. 程序计数器 7. PCB-进程控制块 8. 上下文切换 8.1. 上下文切 ...

  6. Java/Android 进程与线程之 多线程开发(二)

    多线程开发 Java多线程开发 1.线程状态 线程阻塞 线程协作 作用 **wait() / notify** **join()** **Thread.sleep()** wait 与 sleep 的 ...

  7. 【Java并发编程 四】Java的进程与线程

    什么是进程?进程是程序的⼀次执⾏过程,是系统运⾏程序的基本单位,因此进程是动态的.系统运行和关闭⼀个程序即是⼀个进程从创建,运⾏到消亡的过程.在 Java 中,当我们启动 main 函数时其实就是启动 ...

  8. Linux服务器查看带宽,进程和线程

    Linux服务器上监控网络带宽的常用命令 监控总体带宽使用 ――nload.bmon.slurm.bwm-ng.cbm.speedometer和netload 监控总体带宽使用(批量式输出)――vns ...

  9. java的进程和线程_java进程和线程区别与不同

    java进程和线程区别与不同. 一.定义 1.进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,是系统进行资源分配和调度的一个独立单位. 2.线程是进程的一个实体,是CPU调度和分派的基本 ...

最新文章

  1. MarkDown写ppt
  2. jsf 自定义属性_如何在JSF中实现自定义密码强度指示器
  3. JavaWeb笔记:CSS总结
  4. java音频采样_音频重采样的坑
  5. python基础学习笔记——异常处理
  6. Cookie文件内容的含义
  7. B - C语言实验——整数位
  8. gradle配置到阿里云_通过图文步骤的方式,带你配置阿里云服务器搭建网站
  9. js微信抢红包脚本代码_如何利用JavaScript来实现微信抢红包功能的示例代码
  10. 机器学习、数据分析类面经分享
  11. c语言中static 用法
  12. 金融壹账通加马美国研究院“壹账通记忆增强网络”获对话系统学术竞赛佳绩...
  13. 如何短期通过2022年3月PMP考试?
  14. Comic Life 3 for Mac(漫画创作工具)
  15. C# 连接本地数据库
  16. UVA - 10099 The Tourist Guide kruskal算法
  17. 微软官方简体中文版Vs2008与MSDN下载
  18. 废弃的Android手机用起来,就是一台小型服务器!
  19. ie9 下面输入框后面怎么出现一个黑色叉叉
  20. Linux学习教程(一)

热门文章

  1. php 验证码的背景色,做验证码时ImageCreatetruecolor背景颜色只显黑色的解决办法
  2. Django Model各种操作 Meta 常用字段 一对多操作 多对对操作 F Q查询 聚合函数
  3. java大数据日志分析与可视化设计
  4. Axure中继器制作树形结构、Axure结构树、Axure树形
  5. 【SaaS】随心云同城餐饮外卖小程序开发一桌一码扫码点餐配送小程序介绍
  6. mysql 数字大小排序_mysql可以按照数字大小排序吗?
  7. 项目中添加音效--依旧的简单使用
  8. c语言10个选手10个评委,求教C语言题:在歌星大奖赛中,有10个评委为参赛的选手打分,分数为1~100分。...
  9. 《年轻》——塞缪尔·乌尔曼
  10. Ubuntu 一直提示 “检测到系统程序出现问题”