作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
是否可以在执行阻塞协程调用(返回值的协程调用)的同时提供执行调用的线程(我不想使用默认的主线程)?
最佳答案
我想你正在寻找异步(上下文):
import kotlinx.coroutines.*
fun someCalc(): Int {
println(Thread.currentThread().name) // Prints different thread
Thread.sleep(500L)
return 42
}
fun main() {
val result = runBlocking {
val deferred = async(Dispatchers.Default) {
someCalc()
}
deferred.await()
}
println(result)
}
您还可以使用 newSingleThreadContext() 创建一个仅限于单个线程的上下文,并使用它代替 Dispatchers.Default
编辑:正如@Rene 所说,有更好的解决方案:
val result = runBlocking {
withContext(Dispatchers.Default) {
someCalc()
}
}
关于kotlin - 如何在kotlin中执行阻塞协程调用并指定线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59727924/
在我的设置中,我试图有一个界面 Table继承自 Map (因为它主要用作 map 的包装器)。两个类继承自 Table - 本地和全局。全局的将有一个可变的映射,而本地的将有一个只有本地条目的映射。
Rust Nomicon 有 an entire section on variance除了关于 Box 的这一小节,我或多或少地理解了这一点和 Vec在 T 上(共同)变体. Box and Vec
我是一名优秀的程序员,十分优秀!