Java vs Kotlin – методы Spring @Async в одном классе

Я обнаружил, что в Java, когда вы пытаетесь вызвать метод @Async из того же класса, вы фактически запускаете метод в том же потоке, но в Kotlin он работает в async. Похоже, что он работает по-разному с прокси-обертками.

Пример:

@Service class BasicService { @Scheduled(fixedRate = 1000) fun asyncCall() { log.info("Async call") doAsync() } @Async("myAsyncExecutor") open fun doAsync() { log.info("DO ASYNC AND SLEEP. Thread: ${Thread.currentThread().name}") Thread.sleep(7000) log.info("Finsh async call") } ... } 

Когда вы используете Kotlin doAsync() запускается асинхронно через myAsyncExecutor , в Java он запускается в том же потоке, и планировщик будет ждать каждые 7 секунд, прежде чем начнется снова.

Так как Котлин разрешает эту проблему?

Intereting Posts
Как я могу реплицировать несколько первичных конструкторов? Синхронный вызов Android Retrofit 2 Использование булевых? в выражении Kotlin: Запуск kapt в командной строке для создания заглушек для DI Как реализовать ленивый адаптер recyclerView для загрузки, например realm recyclerView, используя kotlin Как отключить клавиатуру, когда я нажимаю EditText? Правильный способ вставки кинжала 2 + Kotlin + ViewModel Правила Kotlin JUnit Схема проектирования моста, приводящая к слишком большому количеству генериков indexOf в массивах Kotlin проблемы с макетами и ошибки в приложении android, разработанные с использованием kotlin Почему мы не можем переопределить свойство val как var с get без его инициализации? Объединение обязательных и произвольных необязательных аргументов конструктора с Groovy Назначение и извлечение карты типов как добавить gradle (идеально используя kotlin-dsl) в существующий проект intellij python