我正在尝试创建一个对象,它可以在自己的线程中顺序执行一些任务,就像它是一个队列一样。
以下示例仅用于演示我的设置,可能完全错误。
class CoroutinesTest {
fun a() {
GlobalScope.launch {
println("a started")
delay(1000)
println("a completed")
}
}
fun b() {
GlobalScope.launch {
println("b started")
delay(2000)
println("b completed")
}
}
fun complex() {
a()
b()
}
}
fun main() {
runBlocking {
val coroutinesTest = CoroutinesTest()
coroutinesTest.complex()
delay(10000)
}
}
Run Code Online (Sandbox Code Playgroud)
现在这段代码打印以下内容
a started
b started
a completed
b completed
Run Code Online (Sandbox Code Playgroud)
这意味着a
和b
并行执行。方法a
,b
和complex
可以从不同的线程调用。当然,该complex
方法也应该支持这个概念。现在,我需要一种机制,允许我一次只执行一个任务,这样我就可以获得以下输出:
a started
a completed
b started
b completed
Run Code Online (Sandbox Code Playgroud)
我做了一些研究,认为 …