我正在尝试使用@Async批注实现异步调用。显然,自从它是一个传统项目以来,Spring版本是3.0.6,所以它不支持较新的接口(AsyncConfigurer)以及后来的Spring版本中引入的侦听器。@Async with Spring 3.0.6
目前@Async调用工作得很好,用于发送电子邮件所需的方法。调用代码调用方法并返回以恢复正常控制。然后调用@Async作为单独的线程。这一切都非常好,并达到了目的。
@Async调用的方法是在那里发送应用程序中的电子邮件。但是,有时可能会触发1000封电子邮件。我认为这会增加1000个左右的线程。这是否会导致在具有这么多活动线程的应用程序中出现问题?这些线程是否自行终止?在内存使用和堆空间方面,JVM发生了什么?
此外,我试图通过标志着方法@Async调用从另一种方法这种方法,但它看起来像没有创建线程和控制实际等待在那里完成该方法的所有操作。为什么它有不同的行为?不知道为什么会这样。
在此先感谢!
我还没有使用任务执行器。我没有在applicationContext.xml或任何spring文件中配置任何东西。 –
有时候,应用程序的其他部分可以配置一个,而Async注释只是选择这些。 您可能需要显式配置ThreadPoolTaskExecutor bean,然后假设您在Spring 3中使用XML而不是以编程方式进行配置,请将您的Asynch支持绑定到执行器,如下所示: ' ' –
PaulNUK