在ThreadPoolExecutor java中跟踪生成的线程

时间:2016-03-02 03:48:42

标签: java multithreading threadpoolexecutor

我使用线程池生成5个线程。现在我想知道跟踪所有这些线程并捕获每个线程的指标的最佳方法,如

  • 每个帖子花了多少时间?
  • 每个线程使用了多少内存?

我们是否有任何现成的实施方案可以帮助我们完成工作。任何建议都会有所帮助。

public static void main(String[] args) {

        ThreadPoolExecutor executors = (ThreadPoolExecutor) Executors.newFixedThreadPool(5);

        System.out.println("at executors step");
        List<String> getlist = getList();
        for (Iterator<String> itr = getlist.iterator(); itr.hasNext();) {
            String element = (String) itr.next();
            String[] command = { "ssh", "hddev-c01-edge-02", "\"" + element + "\"" };
            System.out.println("the command is as below ");
            System.out.println(Arrays.toString(command));
            System.out.println("inside the iterator");
            ParallelExecutor pe = new ParallelExecutor(command);
            executors.execute(pe);
        }
        executors.shutdown();
    }

1 个答案:

答案 0 :(得分:1)

ThreadPoolExecutor中有两种方法,您可以覆盖这些方法来执行此类内容保存,例如线程执行Runnable所花费的时间。 扩展ThreadPoolExecutor并仅覆盖两个方法,如

protected void beforeExecute(Thread t, Runnable r) { }

protected void afterExecute(Runnable r, Throwable t) { }

希望这会有所帮助。