我有以下代码结构:
@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协程库提供的功能,但是由于协程设计,它无法取消带有阻塞的代码。它有一些解决方法吗?