《深入理解Android内核设计思想》读书笔记 第5章 Android进程/线程管理

系列文章

《深入理解Android内核设计思想》读书笔记 第6章 进程间通信Binder

5.1 进程和线程

进程是程序的一个运行实例,线程是CPU调度的一个基本单位
IDE(intergrated development environment)集成开发环境
ADT(Android development tool) 安卓开发工具 在eclipse中的

1、应用程序启动后会创建ActivityThread主线程,主线程始终只有一个(包括当执行别的Activity时)
2、同一个程序包中的组件运行在相同的进程空间中(同一进程空间中的内存区域可共享访问,即activity2可以访问activity1修改后的static变量)
3、不同程序包中的组件可通过一定的方式运行在同一进程空间中(如在组件标签<除了broadcast>或application标签加入android:process属性)
4、一个Activity应用启动后至少有3个线程:一个主线程、2个binder线程
5、PID:process id TID:thread id
6、四大组件不能算是完整的进程实例,最多只能是进程的组成部分

5.2 Handler、MessageQueue、Runnable、Looper、Message

详解过程转到 https://blog.csdn.net/qq_34868086/article/details/80386946

5.3 UI主线程—ActivityThread

5.4 Thread类


  1. Thread类的内部原理

Thread实现了Runnable接口
通过start()方法来创建线程,然后调用run方法

  • Thread休眠和唤醒

  • 相关的方法有wait(),notify(),notifyAll(),interrupt(),join(),sleep()

(1) wait(),notify(),notifyAll() 这三个函数Object类定义的

调用wait()之后线程就会进入无限的等待状态,直到调用notify()/notifyAll()来唤醒它
调用者只有成为Object的monitor才能调用它的wait方法(即拥有对象锁)
成为一个对象的monitor的三种方法:
a、执行这个object的一段synchronized代码或方法
b、如果object是Class类,可以执行它的synchronized static方法

(2) interrupt

中断一个线程的执行过程,有以下三种情况
image

(3) join
image

(4) sleep 和 wait比较

1 wait是Object中的方法,sleep是Thread中的方法
2 wait()会释放对象锁而sleep()不会释放对象锁
3 wait是等待某个object,sleep是等待时间,几一旦到了设置的时间就会被环唤醒,而wait要notify来唤醒

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值