我在Kotlin玩Quasar并开始使用话题和频道。我正在关注一些Java示例并撰写了一小段代码。不幸的是,我似乎无法得到它的工作。它只是阻止主线程并等待。我不太确定联合会在做什么,并想知道这是否会成为问题?Kotlin Quasar话题和频道阻塞问题
public fun channelsDemo() {
val x: Val<Int> = Val()
val t: Topic<Int> = Topic()
fiber {
val c: Channel<Int> = t.subscribe(Channels.newChannel(0))
do {
val m = c.receive()
System.out.println("Channel => " + (m + x.get()))
} while (m != null)
}.join()
x.set(13)
t.send(5)
t.close()
}
编辑:
public fun channelsDemo() {
val x: Val<Int> = Val()
val t: Topic<Int> = Topic()
fiber {
val c: Channel<Int> = t.subscribe(Channels.newChannel(0))
do {
val m = c.receive()
System.out.println("Channel => " + (m + x.get()))
} while (m != 40)
}
fiber {
Strand.sleep(20000)
x.set(13)
t.send(5)
t.send(21)
t.send(40)
t.close()
}
}
虽然这不是正确的流程,但我不确定什么是最佳替代方法“for(Integer m;(m = c.receive())!= null;){}” –
问题中编辑的目的是什么?它是否解决了这个问题?它显示了一些解决方案?历史并没有维持,保持问题简洁,我们可以查看编辑历史,如果我们愿意,也可以在底部,如果你觉得某些无效回答或评论添加快速编辑日志。 –