首页 > 解决方案 > 如何监控执行器服务创建的所有线程的状态

问题描述

有没有办法检查执行器服务创建的所有线程的状态。假设我有 20 个线程。我将如何检查所有这些的状态?

标签: javamultithreadingexecutorservicejava-threads

解决方案


如果你真的想监控线程池中所有线程的状态,你可以尝试像下面的代码一样创建你的 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 创建的所有线程,然后可以获取线程的状态。


推荐阅读