当前位置:首页 » 编程语言 » java查看线程

java查看线程

发布时间: 2022-12-16 04:10:07

java 线程总数如何查看

调用java.lang.Thread中的静态方法:

getAllStackTraces() 返回所有活动线程的堆栈跟踪的一个映射。

Ⅱ 查看Java哪个线程占用CPU资源

以下方法在LINUX下执行通过:
1.先定位占用cpu高的进程
top
2.使用以下命令
ps p 14766 -L -o pcpu,pid,tid,time,tname,stat,psr | sort -n -k1 -r
其中14766是刚才1中cpu占用率高的进程pid
3.2.4 32525 32537 01:58:41 ? Sl 6
0.8 32525 1771 00:43:12 ? Sl 0
0.8 32525 1769 00:39:46 ? Sl 0
0.7 32525 12324 00:33:36 ? Sl 0
0.5 32525 1772 00:27:50 ? Sl 0
0.5 32525 1768 00:25:45 ? Sl 0
0.4 32525 30760 00:19:13 ? Sl 0
0.4 32525 1773 00:22:36 ? Sl 0
0.4 32525 1770 00:20:25 ? Sl 0
0.3 32525 32385 00:00:10 ? Sl 0
0.1 32525 31668 00:00:03 ? Sl 0
0.1 32525 31667 00:00:03 ? Sl 0
0.1 32525 1790 00:07:10 ? Sl 1
其中第3个结果就是此进程中有问题的线程nid
4.通过jstack命令mp出堆栈
"AppController_ThreadPool_L2_Pool Thread" daemon prio=10 tid=0x0000000051c2b000 nid=0x7bb3 in Object.wait() [0x000000005e3c5000]
java.lang.Thread.State: TIMED_WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
at org.company.threadpool.ThreadPoolImpl$PoolThread.run(ThreadPoolImpl.java:142)
- locked <0x00002aaca30341a8> (a org.company.threadpool.ThreadPoolImpl$PoolThread)
其中的nid就是线程的编码,只不过是经过了16进制的转换。
即十进制的31776对应的十六进制)0x7bb3,定位到线程后一切好办。

Ⅲ java 多线程怎么查看当前线程id

publicclass线程id
{
publicstaticvoidmain(String[]args)
{
System.out.println(" ==========多线程怎么查看当前线程id========== ");
init();
}//初始化!
privatestaticvoidinit()
{
for(inti=0;i<2;i++)
{
newThread(newTestRunnable()).start();
}
}
}


{
//简单测试直接用了静态,偷懒了!
privatestaticinti=10;
publicvoidrun()
{
show();
}
synchronizedvoidshow()
{
while(i>=1)
System.out.println("当前执行的线程Id是:"+Thread.currentThread().getName()+"---->"+i--+" ");
}
}

Ⅳ java 如何获得线程池中正在执行的线程数

java中线程池的监控可以检测到正在执行的线程数。
通过线程池提供的参数进行监控。线程池里有一些属性在监控线程池的时候可以使用
taskCount:线程池需要执行的任务数量。
completedTaskCount:线程池在运行过程中已完成的任务数量。小于或等于taskCount。
largestPoolSize:线程池曾经创建过的最大线程数量。通过这个数据可以知道线程池是否满过。如等于线程池的最大大小,则表示线程池曾经满了。
getPoolSize:线程池的线程数量。如果线程池不销毁的话,池里的线程不会自动销毁,所以这个大小只增不+ getActiveCount:获取活动的线程数。
通过扩展线程池进行监控。通过继承线程池并重写线程池的beforeExecute,afterExecute和terminated方法,我们可以在任务执行前,执行后和线程池关闭前干一些事情。如监控任务的平均执行时间,最大执行时间和最小执行时间等。这几个方法在线程池里是空方法。如:
protected void beforeExecute(Thread t, Runnable r) { }

Ⅳ 如何查看一个java进程有多少个线程在工作

理论上来说,如果你全用threadgroup来跑线程的话,有个叫enumerate的方法可以得到【该threadgroup下】所有active的(也就是你说的在工作的)线程以及子线程,但程序里面不一定是把线程放threadgroup里面的,有可能有人自己new一个出来run或者别的,所以不能完全依靠这个办法。我目前想到的办法,貌似得弄个全局的counter,开个守护线程,让这个线程去数监控所有线程的状态,依照线程是否Active去加减这个counter。
还有个懒点的,你看windows的taskmanager(假设你在win平台上的话),里面有一个column叫做thread
count的,我没试过到底准不准,不过这个最省事了,右键点出来一看就知道了。

Ⅵ 如何查看java线程占用的内存

首先加入一个静态方法:
public static long getMemory() {
return Runtime.getRuntime().freeMemory();
}
这个是查看运行时空闲内存的语句。
线程启动前
long point1 = getMemory();
线程调用
long point2 = getMemory();

两数之差 就是占用内存

Ⅶ 如何在c盘中查看java线程数

Windows
通过任务管理器查看进程信息
在进程页签中查看Java进程,我是idea启动,因此可以在idea下查看相关进程


此外可以在详细信息页签下Ctrl+f搜索java


通过控制台查看进程信息
进入CMD,键入tasklist,可以查看所有的进程信息,包括进程ID、内存使用情况


查看Java相关的进程,可以添加过滤条件 tasklist | findstr "java" ,需要注意windows中字符串需要使用双引号,要不就不加也是可以的


如果是在IDEA中启动程序,可以借用idea的Terminal终端执行命令


taskkill 杀死进程
杀死进程使用taskkill /pid 指定进程id,如果无法杀死,可以尝试强制杀死taskkill /pid 进程id -t -f


可以看到idea控制台中进程已结束


通过tasklist | findstr 进程id 已经无法查询到该进程,说明进程终止成功

热点内容
联想安卓升级包在哪里下载 发布:2025-01-24 09:15:20 浏览:591
认票的算法 发布:2025-01-24 09:00:45 浏览:927
android调用打印机 发布:2025-01-24 09:00:32 浏览:808
网易版我的世界服务器如何 发布:2025-01-24 08:55:47 浏览:968
编译器鼻祖 发布:2025-01-24 08:54:11 浏览:844
如何用安卓编译项目 发布:2025-01-24 08:30:46 浏览:863
计算机同时输出和存储设备的区别 发布:2025-01-24 08:29:21 浏览:581
食物语上传 发布:2025-01-24 07:58:44 浏览:754
编程相关书籍 发布:2025-01-24 07:55:45 浏览:430
英雄联盟手游需要哪些配置 发布:2025-01-24 07:42:03 浏览:985