(八)进程和线程(Processes and Threads)

Processes and Threads 进程与线程 Processes and Threads 进程与线程简述俗话说的好“纸上得来终觉浅 绝知此事要宫刑”,多线程编程可以最大限度地利用多核心和操作系统的系统,是提高程序运行性能常用的方法!而进程(Process)和进程(Thread)也是计算机利于最基本的概念,虽然如此,当我们真正的想开发高效率的并发应用,却发现对于他们的理解还是不够深刻!在Android中,当app启动时,系统会为这个applica 阅读详情

当一个应用的第一个组件需要运行时,android系统就为这个组件启动一个只有一个线程的Linux进程,默认的,应用的所有组件都运行这个进程中的这个线程中。

但是,你可以安排组件运行在其他的进程中,并且为你的任意的进程增加若干线程。

1、 进程

组件运行的进程是在manifest文件里控制的,四大组件都一个process属性可以指定进程来运行,这些属性可以被设置为了每个组件都可以运行在 他自己的进程中,或者几个组件共享一个进程,或者不共享,如果两个应用共享一个Linux user ID并且有相同的权限,那么就可以使这两个应用中的组件运行在相同的进程中,也有process属性,用来指定对所有组件的属性。

所有 的组件都在指定的进程中的主线程中实例化,系统调用这些组件就是从主线程里发出的,其他的线程将不会对每个组件再实例化,所有作为调用的回应的这些方法, 比如说View.onKeyDown()还是组件的生命周期函数等等都是运行在这个主线程中的,这就意味着当系统调用这个组件时,这个组件不能长时间的阻 塞线程(比如说网络操作,循环计算),因为这样会阻塞这个进程中的其他组件,你可以将很耗时的任务分到其他的线程中。

当内存不足或者有其他更紧急的进程要求时,Android系统可能关闭一个进程,运行在这个进程中的应用组件因此被销毁,当用户又重新回来时,进程才被重新启动。

至于究竟要停止哪个进程,android系统是通过衡量哪个进程对用户来说更重要来实现的

2、 线程

你可以限制你的应用运行在一个进程中,但是有的时候你需要新开一个线程在后台运行,用户界面需要随时对用户的要求做出反应,所以一些很耗时的工作应该重新启动一个线程来做,以免阻塞主进程。

Android系统提供了一系列方便的类来管理线程(Looper,Handler,HandlerThread)

3、 远程调用(Remote procedure calls)

Android系统有一个轻量级的远程调用机制(RPC)-----一个方法在本地调用,但是在远程执行(在另外一个进程里),返回给调用端的所有结果 都必须的系统能理解的,将数据从本地进程和地址空间传递到远程的进程和地址空间,并在远端重新装配,返回值的时候传输方向相反,android系统会去做 这些传输的工作,让你能够集中精力来定义你的RPC

一个RPC接口只能包含方法,默认的,即使是没有值返回,所有的方法都是同步执行的,就是说本地方法一直会阻塞直到远端的方法执行完毕)。

简单的说,这个远程调用的机制是这样工作的:

首先你需要用IDL(interface definition language)声明你的RPC接口,然后android系统会使用aidl工具来形成一个java接口,并且这个java接口是本地进程和远端进程都 可以获得的,这个java接口包含了两个内部类,请看下图:

这两个内部类有管理远程调用(你用IDL声明的接口)的所以代码,两个内部类都实现IBinder接口,一个是在本地(内部)使用,这个你可以不用自己 写代码,另外一个叫做Stub,继承自Binder类的,包含所有完成进程间通信(IPC)的代码,他包含你在RPC接口中声明的所有方法,你应该继续继 承Stub类来实现这些方法。

一般的,远端进程应该由一个service来管理(因为一个service能通知系统关于这个进程和他连接到的其他进程)。

Processes and Threads 安卓进程和线程官方文档,详细讲述了进程和线程的区别。 立即下载

相关推荐

EBSD数据转ABAQUS的inp文件实操指南

晶体塑性有限元模拟中,如何将材料微观组织表征数据转化为可计算的有限元模型,是连接实验与仿真的关键环节。EBSD技术能够获取材料表面的晶体取向、晶粒形貌和晶界分布信息,但这类数据需要经过格式解析、欧拉角转换、网格生成等步骤,才能被ABAQUS等有限元软件读取。通过将扫描点坐标映射为节点、按像素邻域生成单元,并将Bunge约定欧拉角变换为局部坐标系方向余弦,用户可以准确构建包含真实微观结构的inp文件模型。这一流程广泛应用于金属材料形变、织构演化及应力集中分析等研究场景,有效提升仿真结果与实验的一致性。围绕数据

weixin_42509513的博客 310

操作系统之进程(Processes)和线程(Threads)

要搞明白进程与线程的概念及两者区别,先要了解程序。

Kayla_Smith的博客 500

人工智能——框架表示法

1975年美国明斯基在“A framework for representing knowledge”提出了框架理论。 1. 框架及框架的一般表示形式 框架:一种描述对象属性的数据结构。 框架的一般表示形式 <框架名> 槽名1: 侧面名1:值1,值2…,值p1 侧面名2:值1,值2…,值p2 侧面名2:值1,值2…,值pm1 槽名2: 侧面名...

weixin_33759269的博客 1642

进程(process)和线程(thread)介绍

本文主要介绍进程(process)和线程(thread)的相关知识。一开始,CPU只有在执行完一份完整的任务代码后,才能执行下一份。后来,通过把CPU时间分片,可以让多个任务“看似”同时地执行。为了更好地区分这些“同时”执行的任务以及整合各自对应的资源,人们就提出了process这个概念。如下:每个process都有独立的下列资源:process之间的通信要通过IPC(inter-process communication)来实现。原始的process只有一个“thread of control”来执行任务

liitdar的博客 1万+

AD20/Altium designer——元器件批量命名与编号的高效技巧

本文详细介绍了在AD20/Altium Designer中实现元器件批量命名与编号的高效技巧。通过解析核心的“原理图标注”功能,从基础全局操作到进阶的按模块分区、利用标识符及合并BOM等智能方法,帮助硬件工程师彻底告别手动编号,大幅提升设计效率与文档规范性,并融入了一套完整的实战工作流。

whisky的博客 568

金属表面粗糙度对信号的影响

之前的文章中,已经采用CST中的微带线模块进行了很多的仿真分析,本文将再次利用这些模块,从另外一个角度去探讨关于传输线的使用问题--金属的表面粗糙度。 众所周知,数据传输中,当速率越来越高时,信号在金属介质中的趋肤效应就愈发明显,能量就会更多地集中于金属的表面进行流动,此时,如果金属表面不再光滑而是凹凸不平,能量的传输过程就会产生波动,当这种波动积累到一定的量级,就会严重影响到传输线的阻抗稳定性,从而导致信号失真和传输异常。

一只豌豆象的博客 2895

Processes and Threads 线程和进程的理解

目录 Processes and Threads Process and thread fundamentals A process as a house The occupants as threads Single threaded Multi threaded Back to processes and threads Mutual exclusion Priorities...

moonlightpeng的博客 3375

SAP 系统间 SSO 的真正价值,从 SM59 到可信 RFC 的安全设计

SAP S/4HANA系统间Single Sign-On(SSO)的核心价值在于集中管理通信身份与信任关系,而非仅减少密码输入。传统固定账号密码方式在系统规模扩大后会面临密码管理、审计追踪等挑战。通过SM59配置可信RFC目标系统,结合SSL证书或SAP Trusted System等强认证机制,能有效降低安全凭据暴露风险。SSO配置需配合授权对象、角色管理等建立清晰的信任边界,实现系统间安全通信的同时保持可审计性。这种方案特别适用于Fiori前端与S/4HANA后端等场景,通过可信RFC传递用户身份,避免

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1062

Introduction to processes and threads(线程与进程的区别)

Processes 和 threads 是任何一个multitasking operating system(多任务操作系统)中十分fundamental 的co

a130737的专栏 2335

【制作100个unity游戏之28】花半天时间用unity复刻童年4399经典小游戏《黄金矿工》(附带项目源码)

在游戏发展史上,有些游戏以其简单而耐玩的特性,深深地烙印在了玩家的记忆中。《黄金矿工》就是其中之一,它曾经在4399等游戏平台上掀起了一股游戏热潮。这款游戏不仅给无数玩家带来了欢乐,还让他们体验到了挖掘金矿的刺激与乐趣。在这个项目中,我们将花费半天的时间,利用Unity引擎,重新打造这款经典小游戏。通过复刻《黄金矿工》,我们不仅是在向童年的回忆致敬,更是在挖掘游戏设计的精髓。在这个过程中,我们将学习如何实现游戏的核心玩法,设计简洁而有效的游戏机制。

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 2902

R语言线性混合模型(LMM)分析

它将数据表示为固定效应和随机效应的线性组合,其中固定效应表示总体均值的影响,随机效应表示个体间的随机差异。LMM的目标是通过最大似然估计或最小二乘估计来估计模型中的固定效应和随机效应的参数。LMM结合了固定效应和随机效应,能够同时考虑个体间和个体内的变异,并适用于具有相关性的数据。目前在使用LMM的R语言包中,较常用的是lme4和nlme包,它们提供了丰富的函数和工具来拟合和分析线性混合模型。面板数据分析:LMM适用于分析具有面板结构的数据,如经济学中的面板数据或教育研究中的学生评估数据。

走向CTO的路上... 2968

Processes and Threads 进程和线程,Oracle

Java并发编程涉及进程和线程两个基本执行单元。进程拥有独立的内存空间和执行环境,而线程是轻量级的进程,共享进程资源。现代系统通过多核处理器增强并发能力,但单核系统也能通过时间片实现并发。Java主要通过线程实现并发,但也可使用ProcessBuilder创建新进程。该类允许设置进程属性如命令、环境变量、工作目录和I/O重定向等。典型用法包括:创建简单进程、修改环境变量、重定向输出等。注意ProcessBuilder不是线程安全的,多线程访问时需要同步。

RR1335 之代码才是动力源 983

【Simulink教程案例18】基于simulink的基础OFDM+64QAM发射接收链路仿真

OFDM(Orthogonal Frequency Division Multiplexing)即正交频分复用技术,实际上OFDM是MCM(Multi Carrier Modulation),多载波调制的一种。通过频分复用实现高速串行数据的并行传输, 它具有较好的抗多径衰落的能力,能够支持多用户接入。OFDM技术由MCM(Multi-Carrier Modulation,多载波调制)发展而来。OFDM技术是多载波传输方案的实现方式之一,它的。

FPGA/MATLAB学习教程/源码/项目合作开发 1988

Processes and Threads 进程和线程,算法题+JVM

Processes进程一般,同一个应用的所有组件运行在同一个进程中,并且大多数应用不需要修改这一点然而,如果你发现,需要控制某个组件属于某个指定的进程,你可以在manifest文件中控制它。每种组件元素的 manifest入点,, , ,和—支持一个属性android:process,该属性指定组件应该运行在那个进程.你可以设置这个属性,来控制每个组件运行在它自己的进程中,或者,某些组件共享同一个进程而其他的则不共享此进程。

2401_84149896的博客 909

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

QNX学习笔记3 线程和进程 threads and processes

一个process中可以有好多个thread,那为什么还需要多process,因为 分隔和模块化(decoupling and modularity) 可维护性 (maintainability) 可靠性(reliability) 把问题分解开来正是 QNX Neutrino 的核心理念 一个Neutrino系统由许多个独立的模块组成 每个都有特定的任务 不同process的thread不可以...

weixin_44835176的博客 1289

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Threads and Processes

Ruby 提供了两种管理程序的基本方式,所以你可以同时运行程序的不同部分。你可以通过多线程将同一程序中多个合作任务分离,你也可以通过多进程分离不同程序间的任务。让我们依次来看一下。 多线程 通常可以使用 Ruby 的线程一次性做两件事。这些都是进程内,并且在 Ruby 解释器中实现的。这种方式使 Ruby 线程变得便携,它不需要依赖操作系统,而且使用原生线程也不会获得什么好处。你可能会体验到线程饥饿(由于低优先权的线程没有机会运行)。如果你管理的线程发生了死锁,整个进程可能会逐渐停止。如果某些线程调用操作系

Cloneable的博客 310

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

PROCESSES AND THREADS

最近在变学英语变学点技术,

willy1987的专栏 671

Processes and Threads —— 线程对象 Thread Objects

Java线程创建与管理摘要 Java线程是程序执行的基本单元,可通过Thread类或Runnable接口实现。创建线程有两种主要方式:继承Thread类并重写run方法,或实现Runnable接口后通过Thread构造器启动。每个线程具有优先级(默认与创建线程相同)和守护线程属性。Java虚拟机从main线程开始执行,直到所有非守护线程终止或调用Runtime.exit()。 Java 5.0引入了高级并发工具包(java.util.concurrent),包含执行器(Executor)、并发集合、原子变量

RR1335 之代码才是动力源 936

The Java™ Tutorials — Concurrency :Processes and Threads 进程和线程

The Java™ Tutorials — Concurrency :Processes and Threads 进程和线程原文地址:https://docs.oracle.com/javase/tutorial/essential/concurrency/procthread.html关键点 理解进线程的区别 全文翻译 In concurrent programming, there are

FIRE_TRAY的Android之路 754

Chapter6 Kernel Internals Essentials – Processes and Threads

第 6 章:内核内部基础知识——进程与线程

千年暗室,一灯即明 2682

process进程 and threads线程 之间的关系

Process Concept An operating system executes a variety of programs that run as a process. Process – a program in execution; process execution must progress in sequential fashion. No parallel execution of instructions of a single process Multiple parts

weixin_74400487的博客 1329

Processes and Threads 进程和线程

When an application component starts and the application does not have any other components running, the Android system starts a new Linux process for the application with a single thread of execut

linghu_java的专栏 1740

Processes and Threads 进程和线程,android移动开发基础案例代码

(because another component from the application exists), then the component is started within that process and uses the same thread of execution. 如果应用组件开始时,并且该应用存在一个进程(因为该应用的其他组件在运行),那么该组件在此进程中启动,并使用同一个执行线程。 However, you can arrange for different component

m0_64604466的博客 405

2-PROCESSES AND THREADS

Please indicate the source: http://blog.youkuaiyun.com/gaoxiangnumber1 Welcome to my github: https://github.com/gaoxiangnumber12.1 PROCESSES In any multiprogramming system, the CPU switches from process to

gaoxiangnumber1——Gao Xiang's Blog 6206
上一篇: Android完全退出应用程序的三种方法
下一篇: (九)进程的生命周期(Processes and lifecycles)
hxwhou
博客等级 码龄16年 100粉丝 64原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值