[英]How to monitor status of all threads created by executor service
有没有办法检查执行器服务创建的所有线程的状态。 假设我有 20 个线程。 我将如何检查所有这些的状态?
如果你真的想监控线程池中所有线程的状态,你可以尝试像下面的代码一样创建你的 ThreadFactory:
public class SelfThreadFactory implements ThreadFactory {
private Map<Long, Thread> stateMap = new ConcurrentHashMap<>();
@Override
public Thread newThread(Runnable r) {
Thread thread = new Thread(r);
stateMap.put(thread.getId(), thread);
return thread;
}
public Map<Long, Thread> getStateMap() {
return stateMap;
}
}
使用getStateMap()方法可以得到这个ThreadFactory创建的所有线程,然后就可以得到线程的state。
您可以扩展ThreadPoolExecutor
并使用其方法beforeExecute(Thread t, Runnable r)
和afterExecute(Runnable r, Throwable t)
来监控任务/线程的状态。
您可以在本文中找到示例实现
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.