本文最后更新于48 天前,其中的信息可能已经过时,如有错误请发送邮件到big_fw@foxmail.com
从操作系统角度:
- 进程是运行着的程序,他是程序在操作系统的一次执行过程,是一个程序的动态概念。进程是操作系统进行资源分配的基本单位。
- 线程可以理解成一个进程的执行实体,是比进程粒度更小的执行单元,也是真正运行在CPU上的执行单元。线程是处理器任务和资源调度的基本单位。
进程中可以包含多个线程,进程之间不会相互影响,但是线程之间可以共享数据,也因此会有线程安全问题
从Java的角度:
- 启动一个Java程序,操作系统就会创建一个Java进程。
- 在一个进程里可以创建多个线程,在一个Java程序里,可以自定义创建多个线程,线程拥有各自独立的程序计数器、堆栈和局部变量等属性,并且可以访问共享的内存变量。
线程和进程的其他区别:
- 每个进程有独立的代码和数据空间,程序之间切换会有较大开销。而同一类线程共享代码和数据空间(堆),每个线程都有自己独立的运行栈和程序计数器,线程之间切换开销小。
- 一个线程内可以有多个线程,这多个线程不是按一条线完成的,而是可以有多根线
- 一个进程崩溃后,在保护模式下不会对其他进程造成影响。但一个线程崩溃可能导致整个进程死掉