#java #spring #multithreading #spring-boot #guava
#java #весна #многопоточность #spring-boot #гуава
Вопрос:
Я намеревался использовать реализацию ListenableFuture от Spring Framework, поскольку код будет содержаться в приложении spring boot. Как отмечено в их документе, он вдохновлен guava com.google.common.util.concurrent.ListenableFuture
.
Однако, в отличие от guava ListenableFuture, при просмотре документации по реализации Spring для обратных вызовов / прослушивателей завершения addCallback, для обоих перегруженных, нет упоминания о том, в каком потоке будет выполняться SuccessCallback
/ FailureCallback
/ ListenableFutureCallback
Означает ли это, что они по умолчанию будут выполняться потоком, который завершает будущее?
Кроме того, я обеспокоен тем, что без явного упоминания этого контракта в документах люди могут не решаться его использовать. Так это указано где-то в документах, которые я, возможно, пропустил?
Спасибо
Комментарии:
1. Ребята, у кого-нибудь из команды Spring есть какие-либо входные данные?
Ответ №1:
Для других, у кого может возникнуть тот же вопрос, я хочу добавить наблюдаемое поведение (официально не задокументированное AFAIK, если нет, люди могут исправить и указать мне на это).
Наблюдаемое поведение, как я и подозревал, заключается в том, что они выполняются потоком, который завершает будущее.
Было бы неплохо, если бы реализация spring обеспечивала ту же поддержку, что и guava, но в нынешнем виде мы имеем описанное выше поведение. Это все же лучше, чем guava по умолчанию MoreExecutors.directExecutor()
, где это делается в потоке, который вызывает execute ..
Спасибо