Kotlin 并发编程:线程与协程的深度剖析
1. Java 与 Kotlin 同步和易变方法对比
在 Kotlin 中, Synchronized 和 Volatile 是注解而非关键字,原因在于 Kotlin 除了能在 JVM 上编译,还可在其他平台编译。而同步方法或易变变量的概念是 JVM 特有的。
2. 线程为何开销大
创建新线程时需要付出代价,每个线程都需要一个新的内存栈。以下代码尝试创建 10000 个线程,每个线程睡眠较短时间:
val counter = AtomicInteger()
try {
for (i in 0..10_000) {
thread {
counter.incrementAndGet()
Thread.sleep(100)
}
}
} catch (oome: OutOfMemoryError) {
println("Spawned ${counter.get()} threads before crashing")
System.exit(-42)
}
每个线程的栈需要 1MB 的 RAM,创建大量线程会与操作系统进行大量通信并消耗大量内存。我们通过捕获相关异常来判断是否内存不足。根据操作系统不同,可能会导致 OutOfMemoryError 或使整个系统变得非常缓慢。
可以使用 Ex
超级会员免费看
订阅专栏 解锁全文
2620

被折叠的 条评论
为什么被折叠?



