Java vs Kotlin – Spring @Async methods en la misma class

Descubrí que en Java cuando intentas llamar al método @Async de la misma class, en realidad ejecutas el método en el mismo hilo, pero en Kotlin se ejecuta de forma asíncrona. Parece que funciona de manera diferente con los contenedores de proxy.

Ejemplo:

@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") } ... } 

Cuando utiliza Kotlin doAsync() ejecuta asincrónicamente a través de myAsyncExecutor , en Java se ejecutará en el mismo subprocess y el planificador esperará cada 7 segundos antes de que se inicie nuevamente.

Entonces, ¿cómo Kotlin resolver este problema?