java多线程-基础篇(二)---线程的优缺点与线程的Dump查看

目录

        一 多线程的优势与风险

二 线程的监视

2.1 Jvisualvm  JDK自带的

2.2 Jstack工具 也是JDK自带的

2.3 java Mission Control 简称JMC JDK1.8后自带


                     

线程的基础定义与概念性的问题 这里就不复述了

今天主要讲线程的监视与多线程编程的优势和风险,我们用多线程有什么优点, 有什么风险

其实优点很多都清楚 主要是关键是说不全,还是要记住的东西,记录下以便回顾吧 因为有些东西就算很明白了 长久不用也是会忘的

一 多线程的优势与风险

优势:

     1 提高系统的吞吐率

     2. 提高响应性

    3. 充分利用多核处理器资源

    4. 最小化对系统资源的使用

风险与难点

  1. 线程的安全问题

          线程的理论与设计比较重要 不然容易出问题 难以排除

     2 线程的活性问题

     3 上下文切换

      线程数量控制在多少可以减少上下文的切换,每个线程都有个上下背景文,里面有很多线程相关的信息,每次切换也是不断内存拷贝 次数过多也是很影响系统资源与性能的

    4 可靠性

二 线程的监视

      要灵活的运行好多线程还是很有技术考验的,线上真实的java系统运行时往往有上百个线程在运行,必要的监控与问题排查工具也是必不可少

获取与查看线程的转储(Thread Dump),一般线程转储是保存那一刻的该线程的线程信息

相关的工具

       Jvisualvm,jstack, JMC, (linux)kill -3 PID , (windows)CTRL+ /,  (linux)CTRL+break组合建

线程我们就来操作一遍 笔者是windows系统

Jvisualvm,jstack, JMC 是跟平台不相关的

2.1Jvisualvm查看Thread Dump 

JDK自带

安装的JDK就有,直接在系统中搜索就可以,打开后的样子如下:

java多线程-基础篇(二)---线程的优缺点与线程的Dump查看

查看下我们IDEA的监控信息 可以看到守护线程和实际线程 44个

java多线程-基础篇(二)---线程的优缺点与线程的Dump查看

java多线程-基础篇(二)---线程的优缺点与线程的Dump查看

在应用程序下面有个线程DUMP 目前没挂过 dump不了

java多线程-基础篇(二)---线程的优缺点与线程的Dump查看

好吧要选中VsualVM即可  然后可以堆dump与线程dump

java多线程-基础篇(二)---线程的优缺点与线程的Dump查看

这里分析不展开了 只是简单操作下 后续讲分析吧

 

2.2 Jstack工具 查看Thread Dump 

也是JDK自带的

使用方式为 jstack –l PID

那如何知道PID先要使用JPS工具 执行结果如下

java多线程-基础篇(二)---线程的优缺点与线程的Dump查看

 

看4500 这个吧 jstack –l 4500

java多线程-基础篇(二)---线程的优缺点与线程的Dump查看

What?  好吧 系统装了多个JDK版本 不一致windbg找不到相应的系统符号表吧

不整了 演示一下 效果一样

2.3 java Mission Control 简称JMC查看Thread Dump 

 

JDK1.8后自带

直接系统搜索 java Mission Control

java多线程-基础篇(二)---线程的优缺点与线程的Dump查看

点击了一通 总算找到了 更为详细吧 但是使用起来比较麻烦

java多线程-基础篇(二)---线程的优缺点与线程的Dump查看