之前分享过arthas
的快速入门视频演示,自己打算把这个系列继续做下去。工具还是非常强大的,适用范围也非常的广。在性能测试和性能分析以及故障诊断方面有着非常大的应用。然后和这个工具和JVM
的一些工具搭配起来会非常非常地有用!如果是想做Java
服务端的性能测试的话,我觉得这一定是一个绕不过去的一个神器。
你今天给大家分享啊,arthas
进阶中,比较重要的命令thread
。它主要负责去查看嗯 Java 虚拟机里面关于线程的信息。比如:当前JVM
虚拟机的线程概况、线程的运行状态、线程的优先级等等。当然他也可以查看线程的具体信息,比如:线程的堆栈、线程使用 CPU 的情况线程的死锁,线程使用对象锁或者说是类锁的状态。还可以根据线程的运行状态进行分类统计,你也可以通过设置统计间隔来达到。对线程的运行消耗 CPU 的情况的一个监控。
官方文档地址如下:https://alibaba.github.io/arthas/
由于我并没有使用官方的演示Demo
,自己随手写了一个,下面是代码:
package com.fun
import com.fun.frame.httpclient.FanLibrary
class sdsync extends FanLibrary {
public static void main(String[] args) {
Thread thread1 = new Thread({
1000.times {
test(it + 10000)
}
})
Thread thread2 = new Thread({
1000.times {
test(it + 20000)
}
})
Thread thread3 = new Thread({
1000.times {
test(it + 30000)
}
})
Thread thread4 = new Thread({
1000.times {
test(it + 40000)
}
})
thread1.start()
thread2.start()
thread3.start()
thread1.join()
thread2.join()
thread3.join()
testOver()
}
static void test(int i) {
output(Thread.currentThread().getName() + "开始!----$i")
synchronized (sdsync.class) {
sleep(1000)
}
output(Thread.currentThread().getName() + "结束!-----${i}")
}
}