всем привет, есть вопрос по многопотоку
в последовательном коде методы компонентов принимают данные и возвращают даные (параметры и возвращаемое значение) и это хорошо, такой апи остаётся прозрачным и не накладывает ограничений области видимости данных, помимо тех которые создаёт сам разработчик выстраивая абстракцию. я долгое время писал такой код и не испытывал проблем
когда же я начал писать конкурентный (и/или многопоточный) код, возвращать только данные стало недостаточно, теперь помимо данных, требуется возвращать их "положение во времени и пространстве" - CompletableFuture, асинхронные апи принимают данные но возвращают уже данные во фьюче, и такой метод принуждает тот метод который его вызывал тоже вернуть назад фьючу, либо заблокировать поток чтобы от неё избавиться. тем самым фьюча проникает в контракт метода и растекается по всему апи а мне это не нравится, можно как-нибудь отделить мою бизнес логику от логики конкурентности? или может быть не стоит даже пытаться?