小编Vic*_*kiy的帖子

如何取消协程中的阻塞代码

我有以下代码结构:

 @Throws(InterruptedException::class)
 fun method() {
     // do some blocking operations like Thread.sleep(...)
 }
 var job = launch {
     method()
 }
 job.cancelAndJoin()
Run Code Online (Sandbox Code Playgroud)

method由外部库提供,我无法控制其行为。执行可能需要很多时间,因此在某些情况下应该通过超时取消。

我可以使用withTimeoutkotlin协程库提供的功能,但是由于协程设计,它无法取消带有阻塞的代码。它有一些解决方法吗?

android asynchronous kotlin kotlin-coroutines

2
推荐指数
1
解决办法
996
查看次数

标签 统计

android ×1

asynchronous ×1

kotlin ×1

kotlin-coroutines ×1