繁体   English   中英

如何监控执行器服务创建的所有线程的状态

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM