← 返回首页
JavaSE系列教程(六十)
发表时间:2020-02-07 15:41:18
讲解线程与进程的区别。

1.什么是进程

进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是操作系统进行资源分配和调度的一个独立单位。简单来说一个正在运行中的程序就是一个进程。

2.什么是线程

线程是进程的一个执行单元,是进程内科调度实体。比进程更小的独立运行的基本单位。线程也被称为轻量级进程。一个程序至少有一个进程,一个进程至少有一个线程。

线程与进程之间的关系如下图所示:

一个线程可以创建和撤销另一个线程;同一个进程中的多个线程之间可以并发执行.

相对进程而言,线程是一个更加接近于执行体的概念,它可以与同进程中的其他线程共享数据,但拥有自己的栈空间,拥有独立的执行序列。

3.进程与线程之间的区别

1、地址空间:同一进程的线程共享本进程的地址空间,而进程之间则是独立的地址空间。

2、资源拥有:同一进程内的线程共享本进程的资源,但是进程之间的资源是独立的。

3、一个进程崩溃后,在保护模式下不会对其他进程产生影响,但是一个线程崩溃整个进程都死掉。所以多进程要比多线程程序稳定性更好。

4、进程切换时,消耗的资源大,效率高。所以涉及到频繁的切换时,使用线程要好于进程。同样如果要求同时进行并且又要共享某些变量的并发操作,只能用线程不能用进程。

5、执行过程:每个独立的进程程有一个程序运行的入口、顺序执行序列和程序入口。但是线程不能独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。

6、线程是处理器调度的基本单位,但进程是操作系统调度的基本单位。

7、两者均可并发执行。

4.什么时候会使用多线程

我们知道现代的操作系统都是多用户、多进程、多线程的操作系统。由于线程执行开销小,在以下场合经常会考虑使用多线程实现。

1、后台线程:比如定期执行一些特殊任务,如定期更新配置文件,任务调度,一些监控用于定期信息采集等。

2、服务器处理客户端请求,最典型的应用比如tomcat,tomcat内部采用的就是多线程,上百个客户端访问同一个web应用,tomcat接入后都是把后续的处理扔给一个新的线程来处理,这个新的线程最后调用到我们的servlet程序,比如doGet或者doPost方法。还有就是需要异步处理的时候,需要使用多线程。

3、特别耗时的操作,如备份数据库,可以开个线程执行备份,然后执行返回,前台不断向后台询问线程执行状态。

小结:

1).一个正在运行中的程序就是一个进程,线程是比进程更小的独立运行的基本单位。线程也被称为轻量级进程。一个程序至少有一个进程,一个进程至少有一个线程。

2).线程执行开销小,但是不利于资源的管理和保护。进程执行开销大,但是能够很好的进行资源管理和保护。