Java并发 -- 协程
协程
- 协程可以理解为一种轻量级的线程
- 从操作系统的角度来看,线程是在内核态中调度的,而协程是在用户态调度的,协程的切换成本更低
- 协程栈比线程栈要小得多,典型的线程栈在1M左右,而协程栈一般在几K或者几十K左右
- 因此无论在时间维度还是在空间维度,协程都比线程轻量很多
- 支持协程的语言:Go、Python、Lua、Kotlin
- Java OpenSDK的Loom项目的目标是为了支持协程
Go中的协程
1 | func hello(msg string) { |
- Java中的线程是一个重量级对象,因此无法很好地实现Thread-Per-Message模式,而协程可以
- Thread-Per-Message模式非常简单,模式越简单,功能就越稳定,可理解性也越好
echo程序
1 | import ( |
参考资料
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.