我一直试图找到解释为什么这在kotlin中起作用的解释:
(1..100).map {
launch {
System.out.println("Hello from on ${Thread.currentThread().name}")
delay(100)
}
}.forEach { it.join() }
在java中,这将:
在kotlin中这个进程并行处理多个线程。
为什么这样做?
答案 0 :(得分:3)
map
调用在forEach
之前终止,因此每个launch
将在第一个join
(内部forEach
)之前调用。这些集合操作不像Java的Streams那样工作。请阅读此answer以获取更多信息。
在Kotlin,就像这样:
launch
coroutine 1-100 join
coroutine 1-100