如何对线程池创建的线程自定义名称

文章目录


要实现自定义线程池创建的线程名,主要是在线程工厂中重写newThread()方法

线程工厂

public class TestThreadFactory implements ThreadFactory {
    private final String name = "测试%s号线程";
    private final AtomicInteger nextId = new AtomicInteger(1);

    // 定义线程组名称,在利用 jstack 来排查问题时,非常有帮助
    public TestThreadFactory(String whatFeatureOfGroup) {
    }

    @Override
    public Thread newThread(Runnable task) {
        String threadName = String.format(name, nextId.toString());
        Thread thread = new Thread(task);
        thread.setName(threadName);
        System.out.println(thread.getName() + "正在执行任务...");
        nextId.addAndGet(1);
        return thread;
    }
}

测试类

 @Test
    public void test08() {
        TestThreadFactory testThreadFactory = new TestThreadFactory("");
        testThreadFactory.newThread(new Runnable() {
            @Override
            public void run() {
                System.out.println("我在执行创建者给的任务了...");
            }
        }).run();
        testThreadFactory.newThread(new Runnable() {
            @Override
            public void run() {
                System.out.println("我在执行创建者给的任务了...");
            }
        }).run();
        testThreadFactory.newThread(new Runnable() {
            @Override
            public void run() {
                System.out.println("我在执行创建者给的任务了...");
            }
        }).run();

        /**
         * 结果:
         * 测试1号线程正在执行任务...
         * 我在执行创建者给的任务了...
         * 测试2号线程正在执行任务...
         * 我在执行创建者给的任务了...
         * 测试3号线程正在执行任务...
         * 我在执行创建者给的任务了...
         */
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值