使用 @Async 调用方法与在新线程中调用该方法



我应该选择哪一个?我可以用@Async注释java函数,或者我可以在new Thread中调用该函数,例如像这样的Java 8

new Thread(() -> {
myfunction("Test");
}).start();

这两种方式有区别吗? 提前谢谢。

根据文档,https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/scheduling/annotation/EnableAsync.html:

默认情况下,Spring 将搜索关联的线程池 定义:上下文中唯一的 TaskExecutor Bean,或者 否则名为"taskExecutor"的执行器bean。如果两者都不是 可解析,SimpleAsyncTaskExecutor 将用于处理异步 方法调用。

相似:

您的示例和@Async相似,因为它们可以在单独的线程中执行

差异:

不同之处在于,用 @Async 注释 Bean 的方法将使它在单独的线程中执行,该线程由线程池提供,而不是像您的情况那样直接在线程中执行。

最新更新