进程

  • 比如一个qq,一个java 应用都是独立的线程,这个进程可以包含多个线程。

线程

  • 操作系统级别的如你的机器是4核8线程的,那么你可以同时执行的线程也只有8个。
  • 在java里一个thread 也对应的是操作系统里的一个线程。

协程

  • 由于线程都是操作系统级别的,所以协程是语言级别的,类似于线程中的线程,由变成语言内部实现,不需要和操作系统交互。
  • 运行在用户态。

如何实现一个协程

  • 可以在线程中维护一个队列,然后保存各个协程的数据等方式。

线程和 协程的区别

  • 1个线程占用1m,左右但是协程同时可以有10w个,并且由于协程是用户态的,所以线程切换成本会很低
  • 协程里的操作通常是非阻塞的,因为如果不是非阻塞的会把其他协程堵住。

协程的库

  • vertx,akka