Обратные вызовы завершения ListenableFuture#addCallback от Spring Framework, выполняемые каким потоком?

#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 ..

Спасибо