系列文章
《深入理解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类
- 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
中断一个线程的执行过程,有以下三种情况
(3) join
(4) sleep 和 wait比较
1 wait是Object中的方法,sleep是Thread中的方法
2 wait()会释放对象锁而sleep()不会释放对象锁
3 wait是等待某个object,sleep是等待时间,几一旦到了设置的时间就会被环唤醒,而wait要notify来唤醒