У меня есть приложение командной строки, которое выполняет некоторые асинхронные задачи:
class Main {
companion object {
@JvmStatic
fun main(args: Array<String>) {
GlobalScope.run {
launch {
FetchMovies().execute(7)
}
}
}
}
}
Я запускаю метод main с помощью gradle, здесь конфигурация:
apply plugin: 'application'
mainClassName = 'br.com.alessi.parser.main.Main'
// optional: add one string per argument you want as the default JVM args
applicationDefaultJvmArgs = ["-Xms512m", "-Xmx1g"]
Итак, я запускаю его: $ ./gradlew run
Когда я его запускаю, программа не подходит для асинхронных выполнений.Как я скажу моей программе подождать, пока FetchMovie (). Execute () не завершится?
Я пытался с Thread.sleep (), но это, конечно, немного неточно.
--- EDIT
из документации сопрограмм Я мог бы сделать это:
val job = GlobalScope.run {
launch {
FetchMovies().execute(7)
}
}
job.join()
Но я не могу вызвать job.join () внутри не приостановленного метода, и если я сделаю основной приостановленный, я не могу работать с помощью командылиния.