【发布时间】:2015-10-05 04:57:22
【问题描述】:
我在 Kotlin 中使用 Quasar 并开始使用主题和频道。我正在关注一些 Java 示例并写了一点 sn-p。不幸的是,我似乎无法让它工作。它只是阻塞主线程并等待。我不太确定 join 正在做什么,想知道这是否是问题所在?
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()
}
}
【问题讨论】:
-
do {} 虽然不是正确的流程,但我不确定“for (Integer m; (m = c.receive()) != null; 的最佳替代品是什么” ) {}"
-
问题中编辑的目的是什么?它在解决问题吗?它是否显示了一些解决方案?不必维护历史记录,保持问题简洁,我们可以根据需要查看编辑历史记录,或者如果您认为某些答案或评论无效,您可以在底部添加快速编辑日志。