为线程池自定义线程工厂

示例代码:

public static void main(String[] args) throws Exception {
        // 自定义线程工厂
        ThreadFactoryBuilder threadFactoryBuilder = new ThreadFactoryBuilder();
        ThreadFactory threadFactory = threadFactoryBuilder.setNameFormat("测试-pool-%d").build();
        //每个类型的线程池都重载了一个支持传入线程工厂作为参数的方法
        ExecutorService executorService = Executors.newCachedThreadPool(threadFactory);
        //提交线程任务
        executorService.execute(new Runnable() {
            @Override
            public void run() {
                System.out.println("当前线程:" + Thread.currentThread().getName());
            }
        });
        //提交线程任务
        executorService.execute(new Runnable() {
            @Override
            public void run() {
                System.out.println("当前线程:" + Thread.currentThread().getName());
            }
        });
    }

运行结果如下:

在这里插入图片描述

总结

可以发现自定义了线程工厂后,这个线程工厂所创建的线程都会使用上我们自定义的名称,这样就能很方便的区分开线程池以及排查问题定位了。

原创文章 358 获赞 387 访问量 7万+

猜你喜欢

转载自blog.csdn.net/weixin_38106322/article/details/105653615