1. 使用ThreadFactoryBuilder设置线程名需要引入依赖
com.google.guava guava31.0.1-jre
2. 编写配置类
@Configuration
@EnableAsync
public class AsyncConfig implements AsyncConfigurer {
@Override
public Executor getAsyncExecutor() {
// 设置线程名
ThreadFactory nameThreadFactory = new ThreadFactoryBuilder().setNameFormat("async-pool-%d").build();
return new ThreadPoolExecutor(32,
64,
30,
TimeUnit.SECONDS,
new linkedBlockingQueue<>(128),
nameThreadFactory,
new ThreadPoolExecutor.CallerRunsPolicy());
}
}
3. 测试
@Service
public class AsyncService {
@Async
public void testAsync() {
System.out.println(Thread.currentThread().getName() + " 正在执行任务...");
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
@RestController
public class AsyncController {
@Autowired
private AsyncService asyncService;
@GetMapping("/async/test")
public void asyncTest() {
asyncService.testAsync();
}
}
4. 打印结果如下



