[Java、Android面试]_04_进程、线程、协程

本人今年参加了很多面试,也有幸拿到了一些大厂的offer,整理了众多面试资料,后续还会分享众多面试资料。
整理成了面试系列,由于时间有限,每天整理一点,后续会陆续分享出来,感兴趣的朋友可收藏

文章目录

    • 1. 进程和线程
    • 2. 线程和协程

1. 进程和线程

(1)进程
进程是程序的一次执行过程,是程序在执行过程中分配和管理资源的基本单位,每一个进程都有自己的地址空间,至少有5中状态,他们是: 初始,执行,等待,就绪,终止。
(2)线程
线程是CPU调度和分派的基本单位,它可与同属同一个进程的其他线程共享进程所拥有的全部资源。
(3)两者联系
线程是进程的一部分,一个线程只属于一个进程,但一个进程可以有多个线程;
(4)区别
根本区别:进程是操作系统资源分配的基本单位,而线程是任务调度和执行的基本单位;
开销方面:每个进程都有独立的代码和数据空间(程序上下文),它们之间的切换有较大的开销;线程可看作轻量级进程,同一类线程共享代码和数据空间,每个线程都有独立的运行栈和程序技术器,线程之间的切换开销较小。
(5)所处环境
在操作系统中能同时运行多个进程,而在同一个进程中可有多个线程执行(通过CPU调度,每个时间片中只有一个程序执行)
(6)内存分配方面
系统在运行时会为每个进程分配不同的内存空间;而对线程而言,除了CPU外,系统不会为线程分配内存(线程所有的资源均来自其所属的进程),线程组之间可以共享资源。

2. 线程和协程

(1)协程
协程这个其实很难解释,Android官网貌似都是描述成轻量化线程,主要讲讲它和线程的关系吧

(2)kotlin协程为什么比线程更轻量化
1)非阻塞调度: 协程是基于非阻塞的调度模型设计的。当一个协程在等待某些操作完成(例如 I/O 操作或计算)时,它会挂起,而不会占用线程的执行时间。这使得在单个线程上可以并发执行多个协程,而不需要为每个协程创建一个独立的线程。相比之下,线程是阻塞的执行单位,当一个线程被阻塞时,它会一直占用线程资源。

2)更少的内存消耗: 与线程相比,协程通常需要更少的内存。线程在创建时需要分配一定数量的堆栈内存,而协程共享线程的堆栈。这意味着可以在同一个线程上运行多个协程而不会引起堆栈内存的浪费。

3)切换更轻量化
协程的切换通常比线程切换轻量级,因为它不涉及操作系统的介入和保存整个线程上下文。相反,它只需要保存协程的上下文,这通常包括协程的局部变量、栈帧等。协程调度器可以高效地在同一个线程上切换多个协程,因为它们共享相同的线程资源。

线程的切换是操作系统层面的操作。在多线程编程中,操作系统负责线程的管理和调度。当一个线程被阻塞或者它的时间片耗尽时,操作系统会将当前线程的上下文(包括寄存器状态、堆栈指针等)保存起来,然后切换到另一个线程来执行。这个过程通常被称为线程切换。线程切换需要操作系统的介入,因此它的开销相对较大。

(3)kotlin协程和线程的区别
协程能有效解决“回调地狱”的场景,例如,多重登录的场景,先账户验证-获取用户信息-获取用户资料等,如果使用线程,需要判断每次成功与否,然后使用handler去更新UI。
而协程其自切换主线程,可以有效缓解回调地狱场景。

这些都是常问的,我对这块准备的也不充分,路过的大佬可以在评论区补充!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/747515.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JAVA基础—JVM内存结构基础需知

1.JVM内存结构 JVM内存结构分为5个区域:方法区,虚拟机栈,本地方法栈、堆、程序计数器。 1.方法区(Method Area):用于存储类的结构信息、常量、静态变量、即使编译器编译后的代码等数据。方法区也是所有线…

【数据库】Oracle内存结构与参数调优

Oracle内存结构与参数调优 Oracle 内存结构概览oracle参数配置概览重要参数(系统运行前配置):次要参数(可在系统运行后再优化调整): Oracle数据库服务器参数如何调整OLTP内存分配操作系统核心参数配置Disabling ASMM(禁…

React18 后台管理模板项目:现代、高效与灵活

🎉 给大家推荐一款React18TypescriptVitezustandAntdunocss且超级好用的中后台管理框架 项目地址 码云:https://gitee.com/nideweixiaonuannuande/xt-admin-react18github:https://github.com/1245488569/xt-admin-react18 演示地址 http…

2024年【安全员-A证】复审考试及安全员-A证模拟试题

题库来源:安全生产模拟考试一点通公众号小程序 安全员-A证复审考试参考答案及安全员-A证考试试题解析是安全生产模拟考试一点通题库老师及安全员-A证操作证已考过的学员汇总,相对有效帮助安全员-A证模拟试题学员顺利通过考试。 1、【多选题】《安全生产…

24计算机考研调剂 | 太原科技大学

2024年太原科技大学 力学专业 接收研究生调剂通告 考研调剂招生信息 招生专业: 080100(力学) 01先进材料变形行为及力学性能 02 计算力学及其应用 03结构动力学与无损检测 04复合材料断裂理论与结构设计 补充内容 调剂考生基本要求 &…

男生穿什么裤子最帅?目前最流行的男裤子款式分享

现在不少男生朋友都觉得裤子特别难选,尤其是市面上经常会有一些面料劣质、版型不正确的款式,导致大家选衣服就尤其容易踩雷。所以今天就来和大家分享一下哪些口碑较好的男装品牌值得推荐! 男装裤子怎么选?市面上的品牌多得数不胜数…

layuiAdmin-通用型后台模板框架【广泛用于各类管理平台】

1. 主页 1.1 控制台 2. 组件 3. 页面 3.1 个人主页 3.2 通讯录 3.3 客户列表 3.4 商品列表 3.5 留言板 3.6 搜索结果 3.7 注册 3.8 登入 3.9 忘记密码 4. 应用 4.1 内容系统 4.1.1 文章列表 4.1.2 分类管理 4.1.3 评论管理 4.2 社区系统 4.2.1 帖子列表 4.2.2 回…

简单了解跨域问题如何解决

跨域问题是怎么产生的? 跨域就是违反了浏览器规定的一个同源策略,同源策略是为了保证不同页面之间不能用到对方的一下信息(如cookie,DOM对象)保证安全,同源策略主要是三个方面相同,用一个URL来…

2024年【危险化学品经营单位安全管理人员】考试及危险化学品经营单位安全管理人员考试题

题库来源:安全生产模拟考试一点通公众号小程序 危险化学品经营单位安全管理人员考试根据新危险化学品经营单位安全管理人员考试大纲要求,安全生产模拟考试一点通将危险化学品经营单位安全管理人员模拟考试试题进行汇编,组成一套危险化学品经…

第二百零四回

文章目录 1 .概念介绍2. 使用方法3. 示例代码 我们在上一章回中介绍了自定义缓冲组件相关的内容,本章回中将介绍一个和它类似的组件:下拉刷新组件.闲话休提,让我们一起Talk Flutter吧。 1 .概念介绍 我们在本章回介绍的下拉刷新组件叫Refres…

Java基础-复制

复制 前言引用拷贝浅拷贝深拷贝重写clone()方法序列化 前言 在编码中,我们可能会遇到需要将对象的属性复制到另一个对象中,这种情况叫做拷贝. 拷贝与Java内存结构有密切关系,拷贝有三种情况,引用拷贝,深拷贝和浅拷贝,下面来了解一下. 引用拷贝 引用拷贝会生成一个新的对象引…

15届蓝桥杯第二期模拟赛题单详细解析

文章目录 🧡🧡t1_求余🧡🧡思路代码 🧡🧡t2_灌水🧡🧡思路代码 🧡🧡t3_字符显示🧡🧡思路代码 🧡🧡t4_区间最大和…

携手共进办公网络安全

一、引言 在数字化时代的今天,办公网络安全问题已日益成为企业发展的重要课题。随着信息技术的快速发展,网络安全威胁也呈现出多样化、复杂化的趋势。这些危害可能源于网络本身的漏洞、人为因素或外部威胁,给企业的信息安全和正常运营带来严…

c++ 模板template

作用:通过template定义函数、类可以扩展对不同数据类型通用性。 如下函数就只能接收int类型数据输入,并返回int类型,想处理string类型或者其他类型只能重新定义一个函数。 //不使用模板相加函数,只能对int输入有效返回int int m…

一分钟搞定-爬虫基本原理介绍、实现以及问题解决(干货满满)

嗨,亲爱的初学者们!今天我们要聊一聊一个有趣的话题——爬虫。如果你对网页抓取、数据挖掘或者网络爬虫感兴趣,那么这篇文章就是为你准备的。我们将一起探索爬虫的基本原理、实现方法以及可能遇到的问题和解决策略。准备好了吗?让…

【Python】什么是wsgi,uwsgi,uWSGI?

WSGI WSGI(Web Server Gatway Interface)是一个python标准库,定义了web服务器和Python应用之间的接口。这个标准允许Web服务器(Apache或者nginx)将请求转发给Python应用(如Django或者Flask)然后将应用的响应返回给客户…

游戏组队新姿势!Xinstall一键拉起,好友秒速加入你的战队!

在如今的游戏世界中,与好友一起组队开黑已成为一种潮流。然而,繁琐的组队过程往往让玩家们望而却步。这时,你需要一款强大的辅助工具——Xinstall,它是一站式App全渠道统计服务商,专注于提供App传参安装、全渠道广告效…

hive行转列函数stack(int n, v_1, v_2, ..., v_k)

用stack()函数时,参数中的键值对应按照一对列名和列值进行排使用列 stack(int n, v_1, v_2, ..., v_k) 功能:把k列数据转换成n行,k/n列,其中n必须是正整数,后面的v_1到v_k必须是元素,不能是列名。&#x…

openssl生成免费证书

使用openssl生成免费证书 下载openssl 使用openssl工具生成一个RSA私钥 #使用命令: openssl genrsa -des3 -out server.key 2048 #输入密码: Enter PEM pass phrase:123456 #再次输入密码: Verifying - Enter PEM pass phrase:123456des3 …

面试经典-24-加油站

题目 在一条环路上有 n 个加油站,其中第 i 个加油站有汽油 gas[i] 升。 你有一辆油箱容量无限的的汽车,从第 i 个加油站开往第 i1 个加油站需要消耗汽油 cost[i] 升。你从其中的一个加油站出发,开始时油箱为空。 给定两个整数数组 gas 和 …