java线程池的状态中文_java-线程池中的线程状态

本文介绍了一种监控Java应用中线程状态的方法,特别是在线程使用本地对象时如何判断线程是否活动。通过遍历所有线程堆栈跟踪,可以检测线程是否处于等待状态,并进一步检查线程本地对象的状态。

我想要一个监视所有线程的后台线程.

在所有线程上运行(在ThreadGroup上进行递归调用)很简单.但是,我需要知道哪些线程当前未运行并且仍在使用线程本地对象.

例如:

线程A使用LocalThread A1.线程完成并返回到容器的线程池后,应释放A1.

线程M是我的监视线程.它在所有线程上运行,并找到线程A.因此,它需要知道A是否由于上下文切换而未运行(在这种情况下,A1不是泄漏),或者A当前未在运行,因为它被送回游泳池.

如何区分这两种情况?

顺便说一句,我的监控类需要支持任何平台(应用程序服务器,Web服务器,标准Java,任何供应商,Java 1.5及更高版本).这意味着无论容器使用Executors框架还是旧的线程机制,我都需要知道线程是否处于活动状态.

解决方法:

您可以使用

for(Map.Entry entry : Thread.getAllStackTraces()) {

if (waitingOnTheRightLine(entry))

checkThreadLocalValues(entry);

}

这将检测线程所处的确切行,以检查其未运行以及在已知点的等待状态.

标签:multithreading,java

来源: https://codeday.me/bug/20191101/1985958.html

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值