示例代码:
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());
}
});
}
运行结果如下:
总结
可以发现自定义了线程工厂后,这个线程工厂所创建的线程都会使用上我们自定义的名称,这样就能很方便的区分开线程池以及排查问题定位了。