如何将 async-http-client 的回调安全切换到自定义业务线程池?作者:九师兄发布时间:2026年02月05日问题引入:一次“正确使用”CompletableFuture 却引发的生产事故某社交平台的用户画像同步服务(基于 Flink 实时计算)在上线新版本后,TaskManager 内存使用率从 40% 飙升至 95%,频繁 Full GC,最终 OOM 崩溃。该服务负责将 Kafka 中的用户行为事件通过 async-http-client 异步写入 Redis 和 Elasticsearch。代码审查发现:开发者已意识到 EventLoop 阻塞风险使用了toCompletableFuture().thenApplyAsync(..., executor)切换线程但线程池创建方式为:Executors.newCachedThreadPool()// 危险代码片段privatestatic