java - 如何监控线程池堆积任务

2021-04-13 16:19:40 浏览数 (1)

1. 获得堆积任务大小

代码语言:javascript复制
public static void main(String[] args) throws InterruptedException {
    ThreadPoolExecutor threadPoolExecutor = (ThreadPoolExecutor)Executors.newFixedThreadPool(2);
    for (int i = 0; i < 10; i  ) {
        threadPoolExecutor.submit(new Thread(() -> {
            try {
                Thread.sleep(100000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }));
    }

    Thread.sleep(3000);
    // out => 等待线程 8
    System.out.println(threadPoolExecutor.getQueue().size());
}
获取到堆积大小了,就可以通过打印日志的形式进行输出,也可以通过micrometer prometheus grafana进行完整的监控,可参考 通过micrometer实时监控线程池的各项指标

拓展: ThreadPoolExecutor支持其他数量监控,例如:

0 人点赞