线程池取名字的重要性

130 阅读1分钟

1. 背景

最近看到leader写的代码,在项目中开启了大量的子线程的子线程,然后我在本地debug的时候,idea切换的时候找不到挂起的线程,由此认识到线程池取名字的重要性

2. 实战

public class TestFixedThreadPool {

    /**
     *   默认是这个样子的:pool-1-thread-3
     *   设置了以后长这个样子pre-1-3
     */
    private static final ExecutorService executorService = Executors.newFixedThreadPool(3, new DefaultThreadFactory("pre"));

    public static void main(String[] args) {
        for (int i = 0; i < 100; i++) {
            int finalI = i;
            executorService.execute(new ExtTask(i));
        }

    }

    static class ExtTask implements Runnable{

        int finalI;
        ExtTask(int finalI){
            finalI = finalI;
        }


        @Override
        public void run() {
            String name = Thread.currentThread().getName();
            System.out.println(name + ":" + finalI );
        }
    }
}