进程和线程
一直以为线程和进程是同一件事,今天才发现原来不是这么回事。废话不多说了,仔细揣摩下它们的区别吧。
进程的特征:
- 一个进程就是一个执行中的程序,而每一个进程都有自己独立的一块内存空间,一组系统资源。在进程概念中,每一个进程的内部数据和状态都是完全独立的。
- 创建并执行一个进程的系统开销是比较大的。
- 进程是程序的一次执行过程,是系统运行程序的基本单位。
线程的特征:
- 在java中,程序通过流控制来执行程序流。程序中单个顺序的流控制称为线程
- 多线程指的是单个进程中可以同时运行多个不同的线程,执行不同的任务。多线程意味着一个程序的多行 语句可以看上去几乎同时运行。
二者都是一段完成某个特定功能的代码,是程序中单个顺序的流控制。
不同的是同类的多个线程是共享一块内存空间和一组系统资源,而线程本身的数据通常只有微处理器的寄存器数据,以及一个供程序执行时使用的堆栈。所以系统在产生一个线程,或者在各个线程之间切换时,负担要比进程小得多,正因为如此,线程也被称为轻负荷进程。一个进程中可以包含多个线程。
多线程是实现并发机制的一种有效手段。进程和线程一样,都是实现并发的一个基本单位。线程和进程的主要差别体现在以下两个方面。
- 同样作为基本的执行单元,线程是划分的比进程更小的执行单位。
- 每个进程都有一段专用的内存区域。与此相反,线程却共享内存单元,通过共享的内存单元来实现数据交换,实时通信与必要的同步操作。
多线程的应用范围很广。在一般情况下,程序的某些部分同特定的事件或资源联系在一起,同时又不想为它而暂停程序其他部分的执行,在这种情况下,可以考虑创建一个线程,令它与那个事件或资源关联到一起,并让它独立于主程序运行。通过使用线程,可以避免用户在运行程序和得到结果之间的停顿,还可以让一些任务在后台运行,而用户则在前台继续完成一些其他的工作。总之,利用多线程技术,可以使编程人员方便地开发出能同时处理多个任务的功能强大的应用程序。