notesArea/Java/多线程/进程、线程、协程.md

进程、线程、协程

进程(Process)

进程是操作系统分配资源的最小单元。每个进程都有自己的内存空间、文件描述符、堆栈等资源。

进程的特点

  • 独立性:进程之间是独立的,互不干扰。一个进程的崩溃不会影响其他进程
  • 资源丰富性:每个进程拥有独立的资源,包括内存、文件句柄等
  • 开销大:进程的创建和销毁开销比较大,进程之间的通信也比较复杂
  • 上下文切换:进程的上下文切换开销比较大,因为需要切换内存空间和资源

使用场景

适用于需要强调隔离和独立资源的场景,如独立的服务、应用程序等。

线程(Thread)

线程是进程内的执行单元,一个进程可以包含多个线程。线程之间共享进程的资源,如内存空间、文件描述符等。

线程的特点

  • 资源共享:同一进程内的线程共享进程的系统资源
  • 轻量:线程的创建和销毁开销小,上下文切换快
  • 并发执行:多线程可以并发执行,提高程序的响应速度和资源利用率
  • 同步问题:由于线程之间共享进程资源,因此需要同步机制(如锁)来避免资源竞争和数据不一致的问题

使用场景

适用于需要并发执行的任务,如多任务处理、并行计算等

协程(Coroutine)

协程是一种比线程更轻量级的并发执行单元。协程由程序自身调度,而不是操作系统内核调度。协程可以在执行过程主动让出控制权,以便其他协程运行。

大纲
文件