• 0
  • 0
分享
  • 进程和线程的区别——软件测试圈
  • 饭团🍙 2020-11-19 10:04:30 字数 1958 阅读 2565 收藏 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


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

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • 关于测试用例设计的方法,相信每一位测试工程师都会如数家珍,我更是在很多测试工程师的简历上看到了「精通测试用例设计的基本方法」。但到面试时一问,却发现不少候选人也仅能说出一些概念性的东西,对这些方法的理解还不够深入和透彻,在实际设计用例的过程中更是不知道这些方法该怎么用。这一节,我就以测试用例设计基本方法中最常用的等价类划分法和边界值法为例,重新梳理这些方法,让大家对这测试用例的设计方法有更深入的理解和认识。等价类划分法关于等价类划分法的基本定义和概念,这里就不赘述了。我们需要理解,等价类划分法的意义,在于选择合适的数据子集来代表整个数据集,以实现用尽可能少的用例做完整的覆盖。等价类对应的功能点...
            0 0 44
            分享
          •   10月宠粉福利即将结束,填问卷马上参与。不仅能免费获得测试资料,还能参与抽奖活动,京东卡、测试书籍不容错过。链接:http://vote.51testing.com/  功能  · 钢笔是否可以正常写字  · 写字的时候    -钢笔出水是否流畅    -出水量是否合适, 不会过大, 也不会过小  · 钢笔的墨囊上是否有容量刻度    -如果有容量刻度, 是否和标准刻度一致  · 是否可以显示墨水的存量  · 钢笔的笔帽是否容易盖上    -是否会出现很难盖上, 用力过大    -是否会出现盖上后笔帽太松, 容易划掉  · 笔尖  &nbs...
            0 0 1257
            分享
          • 首先我们先明确测试用例是什么?个人觉得测试用例应该有:标题,测试目的,前提(预设条件),测试步骤,预期结果等。测试人员可以根据测试用例的这些要素,可以执行测试。那么它在软件测试流程中是必需的吗?先分享下个人关于测试用例方面的经历:A公司和B公司。A公司有完备的大型软件开发流程,产品有自己完备的测试用例库和测试用例管理规范,在项目中也有测试用例的输出阶段:功能需求和概要设计出来以后,测试人员就根据这些输入开始着手准备测试用例,接下来还会经历测试用例点的评审和测试用例的定稿阶段,测试人员根据完成的用例执行测试。在项目发布之后,还会预留时间对测试用例进行修改入库。这些入库的测试用例会作为回归测试的全...
            1 1 3764
            分享
          •   网上一搜性能测试,就会出现很多诸如性能测试、负载测试、压力测试、强度测试等一堆专有名词的解释。  但实际上我们不需要区分这么多。  那什么是性能测试?  性能测试针对系统的性能指标,建立性能测试模型,制定性能测试方案,制定监控策略,在场景条件之下执行性能场景,分析判断性能瓶颈并调优,最终得出性能结果来评估系统的性能指标是否满足既定值。  这个定义,其实也就是一个完整的性能测试流程了。  为什么要弄清楚?因为这些概念要抹平沟通的误解,让不同层级,不同角色的人,可以在同样的知识背景下沟通,也可以让做事情的人有清晰的逻辑思路。  一、性能测试需要有指标  指标这个东东通常在很多公司并没有明确的定...
            0 0 1215
            分享
          • IT之家 9 月 27 日消息,苹果 iOS 16.1 目前处于 Beta 测试阶段,其中包括对实时活动 API 的支持。该 API 允许开发者向锁屏界面或灵动岛添加实时通知。随着 iOS 16.1 的不断测试,苹果现已发布了完整的实时活动设计指南,其中概述了开发者在其 App 中添加实时活动的规范。对于苹果 iPhone 14 Pro 和 iPhone 14 Pro Max,两款新机的全新“灵动岛”设计可以让实时活动显示在屏幕顶部。而其他机型可以显示在锁屏界面。苹果官方列出了以下要求:为具有定义的开始和结束的任务和实时事件提供实时活动。只呈现最重要的内容。只在有新内容可用时更新实时活动,只在...
            0 0 1590
            分享
      • 51testing软件测试圈微信