Вызов метода с использованием @Async vs Вызов метода в новом потоке - PullRequest
0 голосов
/ 06 сентября 2018

Какой из них выбрать? Я могу либо аннотировать Java-функцию с помощью @Async, либо я могу вызвать функцию в new Thread, например, Java 8, как это

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

Есть ли разница между этими двумя способами? Заранее спасибо.

1 Ответ

0 голосов
/ 06 сентября 2018

Согласно документации, https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/scheduling/annotation/EnableAsync.html:

По умолчанию Spring будет искать связанный пул потоков определение: либо уникальный компонент TaskExecutor в контексте, либо В противном случае bean-компонент Executor называется «taskExecutor» Если ни один из двух разрешимый, SimpleAsyncTaskExecutor будет использоваться для обработки асинхронных вызовы методов.

Сходство:

и ваш пример, и @Async похожи в том, что они могут быть выполнены в отдельном потоке

Разница:

Разница в том, что аннотирование метода bean-компонента с помощью @Async приведет к его выполнению в отдельном потоке , полученном из пула потоков , а не непосредственно в потоке, как в вашем случае.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...