2025 年是 AI 智能体快速爆发的一年,从单智能体、多智能体到通用智能体的多种不同构建模式持续涌现出来,智能体开发也逐步从概念、Demo 开始走向生产落地,应用范围也从编程助手等几个少数领域,逐步拓展到企业内部业务、生活工作助手等多个领域。随着智能体开始在企业内部业务落地,Java 智能体的构建需求也呈现出爆发式增长的趋势,在智能体编程语言及平台领域,Python、Typescript 一直走在探索前沿,相对来说,Java 领域框架、平台及整体解决方案欠缺,Spring AI Alibaba 1.0 的发布,让 Java 智能体开发迎来一款生产可用的企业级框架与解决方案,助力企业智能体开发进入一个新阶段。上半年,以 Manus 为代表的通用智能体的火爆,让具备自主规划能力的通用智能体进入大众视线,另一方面,MCP 则将模型或智能体外部数据、外部系统的交互方式做了统一。结合这些技术趋势,在探索 Spring AI Alibaba 框架、Manus 通用智能体的过程中,我们正逐步构建起一套零代码快速构建垂直领域智能体的方案(JManus),我们相信它能弥补低代码、高代码框架的开发复杂度
开发中我们经常会用到异步方法调用,具体到代码层面,异步方法调用的实现方式有很多种,比如最原始的通过实现Runnable接口或者继承Thread类创建异步线程,然后启动异步线程;再如,可以直接用java.util.concurrent包提供的线程池相关API实现异步方法调用。 如果说可以用一行代码快速实现异步方法调用,那是不是比上面方法香很多。 Spring提供了Async注解,就可以帮助我们一行代码搞定异步方法调用。Async注解用起来是很爽,但是如果不对其底层实现做深入研究,难免有时候也会心生疑虑,甚至会因使用不当,遇见一些让人摸不着头脑的问题。 本文首先将对Async注解做简单介绍,然后和大家分享一个我们项目中因Async注解使用不当的线上问题,接着再深扒Spring源码,对Async注解底层异步线程池的实现原理一探究竟。