从Android面试题目溯源-1、创建线程有那几种方式

news2024/12/26 23:22:06

概念

程序执行流的最小单位,处理器调度调度和分派的基本单位。

如何理解这个概念

如下图,可以简单类比吉他,六根弦代表六个线程,每个线程独立且单独运行,且持有上一个音的状态,每根手指可类比为一个CPU的核心,在Arm架构中,大小核架构可以类比吉他的高底音弦,震动频率高的1,2,3弦为大核,震动频率相对较低的4,5,6弦为小核(之后针对Arm架构单独讨论)

jacek-dylag-hUHzaiAHuUc-unsplash.jpg

Java的创建方式

  1. 继承Thread
  2. 实现Runnable
  3. 匿名内部类实现Runnable接口
  4. 使用Callable和Future创建有返回值的线程

延伸

Dart如何创建并管理线程

Dart线程模型基于事件循环(event loop)和异步编程的理念,通过Steam和Future类型来支持异步编程。真正意义上的线程被称为Isolate,对应Java意义上的线程,我们可以简单类比Android的Handler-Looper机制为展开版本的async, await,Future异步模型,两者都是基于事件循环,同样的模式,在kotlin等其他语言中可能被称为协程

Rust如何创建并管理线程

  1. 使用std::thread::spawn函数
  2. 使用std::thread::Builder

Linux编程中线程的概念

当我们将目光深入到Linux系统中,我们会发现Linux系统使用轻量级进程(LWP,Lightweight Process)的线程模型来实现多线程,怎么来理解这句话,首先是和进程类似,或者说包含进程的性质的同时,又是轻量级,从具体实现上,我们知晓轻量是指,共享进程的资源(地址空间,文件描述符和其他操作系统资源)。

  • pthread_create创建线程
  • pthread_exit退出线程
  • pthread_cancel取消线程

我们从Linux的编程的概念当中可以看出,虚拟机线程的实现是依赖于操作系统的实现,大部分情况下,语言创建线程对应操作系统的线程,他们有对应关系。

Linux操作系统如何创建线程

计算机组成原理中,我们知晓计算机基本构成,CPU负责计算,内存负责存储计算数据,在Arm架构中,RISC(精简指令集)使用的便是load/save内存操作模型,计算机数据特定的约定可以解释为特定的含义。我们带着这个观点去查看一下Linux使用Syscall(系统调用)创建线程的过程。

#define _GNU_SOURCE
#include <sched.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/wait.h>

void child_function(void *arg) {
    // 新线程执行的代码
    printf("Child thread: %s\n", (char *)arg);
}

int main() {
    // 创建一个新的栈空间
    char stack[4096];
    
    // 使用 clone 系统调用创建新线程
    int flags = CLONE_VM | CLONE_FS | CLONE_FILES | CLONE_SIGHAND | CLONE_THREAD | CLONE_SYSVSEM | CLONE_SETTLS;
    pid_t child_pid = clone(child_function, stack + sizeof(stack), flags, "Hello from child thread");

    if (child_pid == -1) {
        perror("clone");
        exit(EXIT_FAILURE);
    }

    // 主线程执行的代码
    printf("Main thread\n");

    // 等待新线程结束
    waitpid(child_pid, NULL, 0);

    return 0;
}

我们看到通过系统调用clone, 我们得到一个新的,栈大小为4096个字节的线程,新线程栈底部方法是child_function, 其中,创建线程的参数flag 表示共享的资源,例如虚拟内存空间CLONE_VM

总结

回到面试题,线程的创建和管理是开辟一个新的方法栈空间,执行新的函数调用。最初的原因是 IO性能远远低于CPU处理性能,在客户端上的体现是不耗时操作不阻塞主线程(UI线程)给用户提供流畅的体验,近些年来,协程的出现,本质上是Event Loop + 异步编程,轻量级的协程,优化的事件队列,比如Flutter实现的EventLoop由两部分组成。

  • 事件队列(Event Queue),存储异步事件
  • 微任务队列(Microtask Queue)存储立即执行的异步事件

这些方式都非常适合客户端提高流畅性和响应速度,可以多使用协程等类似的手段处理小并发问题,性能上会优于使用线程。

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

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

相关文章

E云管家开发个人微信号批量修改好友备注

简要描述&#xff1a; 修改好友备注 请求URL&#xff1a; http://域名地址/modifyRemark 请求方式&#xff1a; POST 请求头Headers&#xff1a; Content-Type&#xff1a;application/jsonAuthorization&#xff1a;login接口返回 参数&#xff1a; 参数名必选类型说…

Linux常见指令基础知识

目录 初始Linux操作系统 Linux背景&#xff1a; 开源 &#xff1a; 发行版本&#xff1a; ​编辑 OS概念&#xff0c;定位&#xff1a; 使用 XShell 远程登录 Linux Linux相关知识 文件是什么&#xff1f; 路径分隔符 &#xff08;.&#xff09; 和 &#xff08;. .&…

玻色量子研发进展

2023年 2023.8 量子计算突破云渲染资源调度&#xff01;真机测试完整报告公开&#xff01; 2023.8 量子计算突破金融信用评分&#xff01;真机测试完整报告公开&#xff01; 2023.7 玻色量子“揭秘”之旅行商问题与Ising建模 2023.7 玻色量子“揭秘”之背包问题与Ising建…

计算机服务器中了faust勒索病毒怎么办,faust勒索病毒解密文件恢复

计算机技术的不断发展&#xff0c;为企业的生产生活运营提供了坚实基础&#xff0c;但网络是一把双刃剑&#xff0c;网络安全威胁也在不断增加&#xff0c;近期&#xff0c;云天数据恢复中心陆续接到很多企业的求助&#xff0c;企业的计算机服务器遭到了faust勒索病毒攻击&…

HelpLook可以作为wordpress的替代品,帮助企业快速搭建博客

博客作为一个非常有价值的平台&#xff0c;在当今的数字时代具有重要的意义。对于个人和企业来说&#xff0c;选择一款适合自己需求的专业博客搭建软件至关重要。本篇文章将会通过对比两个专业的博客搭建软件——HelpLook和WordPress&#xff0c;看看为什么我说HelpLook可以作为…

js相同字符串截取拼接

原数据 const list [999-1234567801,999-1234567802,999-1234567803, ]; const list1 [999-1234567899,999-1234567900,999-1234567901, ];期望数据 999-1234567801/2/3 //list 999-1234567899/900/901 //list1处理代码 // 连续号码处理 export const formatNumber (tick…

具身智能17篇创新性论文及代码合集,2023最新

今天来聊聊人工智能领域近期的一个热门研究方向——具身智能。 具身智能&#xff08;Embodied Intelligence&#xff09;指的是机器人或智能体通过感知、理解和交互来适应环境&#xff0c;并执行任务的能力。与传统的基于规则或符号的人工智能不同&#xff0c;具身智能强调将感…

文件批量重命名:多个路径文件批量改名编号并移动到同一路径的操作方法

在日常生活和工作中&#xff0c;可能会遇到需要批量重命名文件的情况。比如说&#xff0c;从不同的路径下载了一堆图片&#xff0c;或者从不同的文件夹中收集了一些文件&#xff0c;现在要将这些文件按照一定的规则进行编号命名。这种情况下&#xff0c;手动修改文件名并且移动…

【密码学引论】密码学的基本概念

第二章 密码学的基本概念 1、密码学定义 密码编制学和密码分析学共同组成密码学 密码编制学&#xff1a;研究密码编制密码分析学&#xff1a;研究密码破译 2、密码体制的五个组成部分 明文空间M&#xff0c;全体明文的集合密文空间C&#xff0c;全体密文的集合密钥空间K&am…

智慧农田可视化大数据综合管理平台方案,EasyCVR助力农业高质量发展

一、背景需求 我国是农业大国&#xff0c;农业耕地面积达到20亿亩。随着物联网、大数据、人工智能等新一代信息技术与农业农村加速融合&#xff0c;以及国家对农业的重视&#xff0c;智慧农业对于我国农业现代化建设和实施乡村振兴战略具有重大引领与推动作用。在传统农田生产…

python基于YOLOv7系列模型【yolov7-tiny/yolov7/yolov7x】开发构建钢铁产业产品智能自动化检测识别系统

在前文的项目开发实践中&#xff0c;我们已经以钢铁产业产品缺陷检测数据场景为基准&#xff0c;陆续开发构建了多款目标检测模型&#xff0c;感兴趣的话可以自行阅读即可。 《YOLOv3老矣尚能战否&#xff1f;基于YOLOv3开发构建建钢铁产业产品智能自动化检测识别系统&#xf…

SSM跆拳道网站系统开发mysql数据库web结构java编程计算机网页源码eclipse项目

一、源码特点 SSM 跆拳道网站系统是一套完善的信息系统&#xff0c;结合springMVC框架完成本系统&#xff0c;对理解JSP java编程开发语言有帮助系统采用SSM框架&#xff08;MVC模式开发&#xff09;&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模…

Apipost也出IDEA插件了?Apipost-Helper!

IDEA是一款功能强大的集成开发环境&#xff08;IDE&#xff09;&#xff0c;它可以帮助开发人员更加高效地编写、调试和部署软件应用程序。我们在编写完接口代码后需要进行接口调试等操作&#xff0c;一般需要打开额外的调试工具。 今天给大家介绍一款IDEA插件&#xff1a;Api…

DM8误删除操作恢复方案

达梦数据库三种在误删除操作后的回退方案 一、闪回表 当用户操作不慎导致错误的删改数据时&#xff0c;闪回方式可以恢复数据。闪回技术&#xff0c;就是为了用户可以迅速处理这种 数据逻辑损坏的情况而产生的。 闪回技术主要是通过回滚段存储的 UNDO 记录来完成历史记录的还原…

【傻瓜级JS-DLL-WINCC-PLC交互】4.DLL读取WINCC内部变量

思路 JS-DLL-WINCC-PLC之间进行交互&#xff0c;思路&#xff0c;先用Visual Studio创建一个C#的DLL控件&#xff0c;然后这个控件里面嵌入浏览器组件&#xff0c;实现JS与DLL通信&#xff0c;然后DLL放入到WINCC里面的图形编辑器中&#xff0c;实现DLL与WINCC的通信。然后PLC与…

OpenHarmonyMeetup2023北京站圆满举办

“OpenHarmony正当时”OpenHarmonyMeetup2023城市巡回活动,旨在通过meetup线下交流形式,解读OpenHarmony作为下一代智能终端操作系统的新版本及成果转化,提升开发者对OpenHarmony的关注度,普及OpenHarmony开发技能,加速开发者对OpenHarmony的掌握,从而吸引更多企业和技术爱好者…

在 The Sandbox 设置总部,SCB 10X 和 T-POP 为 4EVE 元宇宙音乐会揭幕

协作学习为全球粉丝提供了无限的可能性&#xff0c;让他们通过革命性的元宇宙体验沉浸在泰国流行文化中。 作为 SCBX 集团背后的创新力量&#xff0c;SCB 10X 很高兴宣布与 T-POP Incorporation 展开开创性合作&#xff0c;T-POP Incorporation 是泰国流行文化在全球舞台上的领…

Phpstudy v8.0/8.1添加 php-7.4.9

1、官网下载最新的php版本 打开Windows版的官网下载&#xff0c;地址&#xff1a;PHP For Windows: Binaries and sources Releases 页面上有不同的PHP版本&#xff0c;这里我们下载的是64位nts版的PHP7.4.9&#xff0c;php-7.4.9-nts-Win32-vc15-x64.zip。 2、解压下载的文…

苹果mac屏幕投屏镜像工具AirServer2024

airserver 是什么软件&#xff1f;AirServer 是一款 Airplay Mac屏幕镜像应用&#xff0c;AirServer可以通过 mac 实时接收iPhone、iPad以及Android设备的实时屏幕画面。AirServer 可以将一个简单的大屏幕或投影仪变成一个通用的屏幕镜像接收器。在您的大屏幕上启用 AirServer …

量子力学:科技前沿的探索与挑战

量子力学:科技前沿的探索与挑战 一、量子力学的魅力与挑战 量子力学是研究微观粒子如电子、光子等行为的物理学分支。与经典力学不同,量子力学描述了一个充满不确定性和概率性的世界。在这个世界里,粒子可以同时处于多个状态,只有当我们对其进行测量时,它才会“选择”一个…