io 进程 线程 协程
进程
- 比如一个qq,一个java 应用都是独立的线程,这个进程可以包含多个线程。
线程
- 操作系统级别的如你的机器是4核8线程的,那么你可以同时执行的线程也只有8个。
- 在java里一个thread 也对应的是操作系统里的一个线程。
协程
- 由于线程都是操作系统级别的,所以协程是语言级别的,类似于线程中的线程,由变成语言内部实现,不需要和操作系统交互。
- 运行在用户态。
如何实现一个协程
- 可以在线程中维护一个队列,然后保存各个协程的数据等方式。
线程和 协程的区别
- 1个线程占用1m,左右但是协程同时可以有10w个,并且由于协程是用户态的,所以线程切换成本会很低
- 协程里的操作通常是非阻塞的,因为如果不是非阻塞的会把其他协程堵住。
协程的库
- vertx,akka