我正在尝试使用@Async注释实现异步调用。显然,由于它是一个遗留项目,Spring 版本是 3.0.6,因此它不支持更新的接口(AsyncConfigurer)和更高版本的 Spring 引入的侦听器。
目前,@Async调用在发送电子邮件所需的方法上工作得很好。调用代码调用该方法并返回以恢复正常控制。然后将@Async调用作为单独的线程调用。这一切都非常好,达到了目的。
@Async调用是在一个用于在应用程序中发送电子邮件的方法上。但是,有时可能会触发 1000 封电子邮件。我认为这会引发 1000 个左右的线程。这不会导致有这么多活动线程的应用程序出现问题吗?这些线程会自行终止吗?JVM 在内存使用和堆空间方面会发生什么?
此外,我试图通过将该方法标记为@Async从另一个方法调用此方法,但看起来线程没有创建,并且控件实际上在那里等待以完成该方法中的所有操作。为什么它有不同的行为?不知道为什么会这样。
提前致谢!