官术网_书友最值得收藏!

Active

A job in the state new can be started in many ways, but commonly it will be done by calling start() or join(), the difference being that the former will start the job without waiting for it to complete, whereas the latter will suspend execution until the job completes. Take this example into consideration:

fun main(args: Array<String>) {
val job = launch(start = CoroutineStart.LAZY) {
delay(3000)
}

job.start()
}

The mentioned code will not suspend execution when job.start() is invoked, so the application will complete its execution without waiting for job to complete.

Since start() doesn't suspend execution, it doesn't need to be called from a suspending function or coroutine. It can be called from any part of our application.

If we use join(),we will force the application to wait for job to complete, as demonstrated:

fun main(args: Array<String>) = runBlocking {
val job = launch(start = CoroutineStart.LAZY) {
delay(3000)
}

job.join()
}
As  join() can suspend execution, it needs to be called from a coroutine or a suspending function. Note that runBlocking() is being used for that.

Any job that has been started is therefore active, and it will be active until it completes execution or until cancellation is requested.

主站蜘蛛池模板: 罗江县| 儋州市| 平顺县| 吴忠市| 昌图县| 永城市| 大田县| 星子县| 宁阳县| 江川县| 铜川市| 塔城市| 孟连| 肃宁县| 桓仁| 阿克陶县| 宝坻区| 鄂托克前旗| 崇阳县| 绿春县| 商城县| 城步| 庆云县| 丹巴县| 鹤壁市| 屏边| 淄博市| 包头市| 中超| 巴塘县| 云安县| 怀柔区| 勐海县| 化德县| 镇雄县| 寻甸| 哈尔滨市| 察隅县| 横山县| 庄河市| 星子县|