我应该选择哪一个?我可以用@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 的方法将使它在单独的线程中执行,该线程由线程池提供,而不是像您的情况那样直接在线程中执行。