Java面试题三:进程和线程的区别和联系

      当我们使用电脑打开QQ的时候,这时候电脑就开启一个进程。当我们查看QQ里面的发的信息或者扫一扫等各种操作的时候,其实就开启了线程。

1、进程:

      进程是系统正在运行的应用程序,程序一旦运行就是进程, 进程是资源分配和调度的独立单位。

      程序是是一组指令的有序集合,本身没有什么含义,只是一个静态的实体。而进程不同,它是程序在某个数据集上的执行。进程是一个动态的实体,有自己的声明周期,进程因创建而产生,因调度而运行,因等待资源或者时间处于等待状态,因完成任务而撤销。反应了一个程序在一定数据集上运行的全部动态过程。程序是指令、数据及其组织形式的描述,进程是程序的实体。

2、线程:

       随着计算机的发展,对CPU的要求越来越高,进程之间切换开销较大,已经无法满足越来越复杂的程序要求了。于是就出现了线程,线程是程序执行中一个单一的顺序控制流程,是程序执行流的最小单元,是处理器调度和分配的最小单位, 它被包含在进程之中,是进程中的实际运作单位。一条线程是指进程中一个单一顺序的控制流,一个进程中可以有多个并发的线程,每条线程并行执行不同的任务。线程是操作系统能够进行运算调度的最小单位,线程本身不拥有资源,只拥有线程运行中必不可少的资源,在同一个进程中线程之间共享进程所拥有的全部资源。

3、进程和线程之间的区别:

    进程和线程的主要区别在于不同的操作系统资源管理方式。进程有独立的地址空间,一个进程崩溃后,在保护模式下不会对其他模式产生影响,而线程只是一个进程中不同的执行了路径。线程有自己的堆栈和执行变量,但是线程之间没有单独的地址空间,所以一个线程死掉就等于整个进程死掉,所以多进程的程序要比多线程的程序健壮,但是在进程之间相互切换的时候,耗费的资源较大,效率差一些,但是对与一些要求同时进行并且共享某些变量的操作,只能用线程,不能使用进程。

  1. 线程是程序执行的最小单位,进程是操作系统分配资源的最小单位;
  2. 一个程序至少有一个进程,一个进程由一个或多个线程构成,线程是一个进程中代码的不同代码的执行路线;
  3. 进程之间相互独立,但同一进程下的各个线程之间共享程序的内存空间(包括代码段和数据集)和同一进程内的资源。线程不能独立执行,必须在应用程序中, 由应用程序提供多个线程执行控制。
  4. 一个应用程序中,多线程的多个部分可以同行执行,
  5. 调度和转换:线程的上下文的切换和进程上下文的切换快

4、使用多线程的原因

    因为线程比较廉价,线程的启动速度快,退出比较快,对系统资源冲击比较小。线程之间分享了大部分的核心对象拥有权。

5、总结:

     进程和线程都是一种抽象的概念,线程是一种比进程还小的抽象,线程和进程都可以实现并发。进程是能拥有资源和独立运行的最小单位,也是进程执行的最小单位。一般进程会有多个线程。

     线程执行开销小,不利于资源的管理和保护;而进程正好相反,线程开销大,便于资源的管理和保护,

大部分的操作系统采用的时间片轮转的抢占式调度方式,一个任务执行一小段时间暂停去执行下一个任务,每个任务轮流执行。任务执行的一小段时间叫做时间片,任务正在执行的状态叫做运行状态被暂停的任务就处于就绪状态,等待下一个属于它的时间片的到来。这样每个任务都可以执行,由于CPU的执行效率非常的高,时间片非常短,在各个任务之间快速的切换,给人感觉多个任务就好像在同时执行。

猜你喜欢

转载自blog.csdn.net/Sunshineoe/article/details/114681765
今日推荐