• 0
  • 0
分享
  • 进程和线程的区别——软件测试圈
  • 饭团🍙 2020-11-19 10:04:30 字数 1958 阅读 2538 收藏 0

      前两天面试,被问到进程和线程的区别,由于是第一次面试软件测试岗,被问到这么“专业”的问题,有点惊讶,之后马上在脑海中努力回忆,还好能回答出7788。。总算没给自己专业丢脸

      1.进程和线程的关系和区别

      进程是一个程序在其自身的地址空间中的一次执行活动,是资源申请、调度和独立运行的单位。线程是进程的一个单一的连续控制流程,一个进程可以拥有多个线程。

      线程调度的两种方式:抢占式、非抢占式。

      进程和线程的区别在于,线程没有独立的存储空间,而是和所属进程中的其他线程共享一个存储空间。

      一个线程只能属于一个进程,而一个进程可以有多个线程,但至少有一个线程。线程是操作系统可识别的最小执行和调度单位。

      资源分配给进程,同一进程的所有线程共享该进程的所有资源。同一进程中的多个线程共享代码段(代码和常量),数据段(全局变量和静态变量),扩展段(堆存储)。但是每个线程拥有自己的栈段,栈段又叫运行时段,用来存放所有局部变量和临时变量。

      处理机分给线程,即真正在处理机上运行的是线程。

      线程在执行过程中,需要协作同步。不同进程的线程间要利用消息通信的办法实现同步。

      2.线程的状态

      5个状态:新建、就绪、运行、阻塞/睡眠/等待、死亡。

      线程间的通信一般用wait()方法、notify()方法、和notifyAll()方法。他们都是object类的最终方法,每个类都默认拥有。

      3.多线程的实现方法

      多线程有三种实现方法:

  • 继承Thread类。

  • 实现Runnable接口。利用继承Thread类创建的多个线程,虽然执行的是相同的代码,但彼此相互独立,且各自拥有自己的资源没互不干扰。而通过实现Runnable接口可以使多个线程拥有同一资源。

  • 实现Callable接口。接口中要覆盖的方法是publiccall()注意:此方法可以抛异常,而前两种不能而且此方法可以有返回值

      4.使用多线程的优缺点

      多线程的优点是:提高并发程度、提高效率;缺点是数据同步困难、开发调试难、任意使用多线程会降低效率(过犹不及)

      多线程的不利方面:线程也是程序,所以线程需要占用内存,线程越多占用内存也越多;

      多线程需要协调和管理,所以需要CPU时间跟踪线程;

      线程之间对共享资源的访问会相互影响,必须解决竞用共享资源的问题;

      线程太多会导致控制太复杂,最终可能造成很多Bug。

      5.线程的run()和start()有什么区别?

      每个线程都是通过某个特定Thread对象所对应的方法run()来完成其操作的,方法run()称为线程体。通过调用Thread类的start()方法来启动一个线程。

      start()方法来启动一个线程,真正实现了多线程运行。这时无需等待run方法体代码执行完毕,可以直接继续执行下面的代码;这时此线程是处于就绪状态,并没有运行。然后通过此Thread类调用方法run()来完成其运行状态,这里方法run()称为线程体,它包含了要执行的这个线程的内容,Run方法运行结束,此线程终止。然后CPU再调度其它线程。

      run()方法是在本线程里的,只是线程里的一个函数,而不是多线程的。如果直接调用run(),其实就相当于是调用了一个普通函数而已,直接待用run()方法必须等待run()方法执行完毕才能执行下面的代码,所以执行路径还是只有一条,根本就没有线程的特征,所以在多线程执行时要使用start()方法而不是run()方法。

      6.什么是单线程和多线程

      单线程是先执行完A再执行B。

      多线程是A执行一段,B执行一段。然后共同完成。

      举个很常见的例子来加深理解:

      你正在刷朋友圈,你老妈微信语音给你,你是不是可以边听(假装在听)老妈的唠叨其实是在刷朋友圈根本没听老妈唠叨什么。这就是多线程。

      如果你只能听老妈的唠叨啥事都不能干不能退出聊天界面,就是单线程。

      测试实习面试时被问及的可不止这一个问题,更多面试题和经历可以看一下我的这篇?软件测试实习面试都问啥,实习相对来说要求没那么高,最重要就是自信点,准备充分点。然而秋招面试时除了会考察你知识面的广度还会考察你知识的深度,所以问的也会更深入问题也不同,需要的看这篇?秋招面试常考知识点


作者:lucky多多

原文链接:https://blog.csdn.net/weixin_41948075/article/details/89220359#comments_13635704


  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • 为什么要做接口自动化相对于UI自动化而言,接口自动化具有更大的价值。为了优化转化路径或者提升用户体验,APP/web界面的按钮控件和布局几乎每个版本都会发生一次变化,导致自动化的代码频繁变更,没有起到减少工作量的效果。而接口一旦研发完成,后期重构/大幅度修改的频率则比较低.因而做接口自动化性价比还是很高的,对于迭代版本旧有功能的回归,beta测试,线上回归都能起到事半功倍的作用。本文不详细谈单个接口的测试,我们来主要来分析一下基于业务场景的接口自动化怎么做。问题在哪里一个业务场景通常需要多个接口才能走完一个完整的业务流程,其中每个接口完成一个特定的功能步骤。例如微信的添加好友流程:每个操作步骤...
            12 13 3073
            分享
          •   先看一下LoadrunnerControler的界面是什么样的:  第一部分:scenarioscript  (1)scriptname:选择脚本的名字;  (2)scriptpath:脚本路径(自动);  (3)分配虚拟用户的方式:百分比/用户组--可以在scenario->convertscenariotothevusergroupmode可以切换到用户组模式。  这里切换到用户组模式后,如何修改里面的quantity?  需要到,录制脚本的vusergenerator中Tools->Createcontrolerscenario里面设置虚拟用户数和用户组的而名称,然后加载...
            0 0 221
            分享
          •   线性回归是机器学习中最基础的模型。虽然相较而言其结构简单且易理解,但其不仅能体现出机器学习重要的基本思想,还能构造出功能更加强大的非线性模型,对于后续机器学习算法的不断发展起了至关重要的作用。  在数理统计中,回归分析是确定多种变量间相互依赖的定量关系的方法。线性回归假设输出变量是若干输入变量的线性组合,并根据这一关系求解线性组合中的最优系数。在众多回归分析的方法里,线性回归模型最易于拟合,其估计结果的统计特性也更容易确定,因而得到广泛应用。而在机器学习中,回归问题隐含了输入变量和输出变量均可连续取值的前提,因而利用线性回归模型可以对任意输入给出对输出的估计。  1875年,从事遗传问题研...
            13 13 1022
            分享
          • 常见状态码一、2xx 成功200 OK 请求成功,且返回了内容204 No Content 请求成功处理,但不返回内容二、3xx 重定向301 Moved Permanently 请求永久重定向302 Moved Temporarily 请求临时重定向304 Not Modified 文件未修改,可以直接使用缓存的文件三、4xx 请求错误400 Bad Request 客户端请求有语法错误,不能被服务器所理解401 Unauthorized 请求未经授权,认证未通过403 Forbidden 服务器收到请求,但是拒绝服务,通常会在响应正文中给出不提供服务的原因。通常跟权限有关404 Not F...
            0 0 662
            分享
          •   据报道,就在最新的“MetaVerified”订阅服务发布后几个小时,TwitterCEO埃隆·马斯克(ElonMusk)就表示,Meta“必然”效仿Twitter,对认证用户收费。  扎克伯格周日表示,如果通过网页浏览器购买,Meta针对Facebook和Instagram推出的认证订阅项目起价为每月11.99美元。“这项新功能是为了增强我们各项服务的真实性和安全性。”他说,这项服务可以保护订阅者不被冒充,还可以直接联系客服。Meta将于本周首先在澳大利亚和新西兰推出这项服务。  对此,有媒体发文称,MetaCEO马克·扎克伯格(MarkZuckerberg)对认证用户收费的做法是在效仿...
            0 0 885
            分享
      • 51testing软件测试圈微信