目录
一、什么是线程?
1、进程和线程的区别
2、如何创建线程?创建线程的几种方式?
3、Android线程间通信机制?
(1)通过单向数据管道传递数据
(2)共享内存通信
(3)实现消费者 - 生产者模式 BlockingQueue
(4)消息队列
4、什么是ANR?
二、线程的开启
1、线程的状态:
2、子线程开启的两种方式:
(1)扩展Thread类实现开启子线程
(2)实现Runnable接口
三、线程间的通信
1、线程间通信相关的组件
2、线程间的通信
3、线程发送消息的步骤
4、线程间的通信
(1)主线程向子线程发送消息
(2)子线程向主线程发送消息
5、线程间多个参数的传递
6、通过adb命令查看线程信息
一、什么是线程?
线程(英语:thread)是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。
一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。
线程是独立调度和分派的基本单位。
同一进程中的多条线程将共享该进程中的全部系统资源。
一个进程可以有很多线程,每条线程并行执行不同的任务。
1、进程和线程的区别
进程是资源管理的最小单位,线程是程序执行的最小单位
每个进程都有自己的数据段 代码段 和堆栈段。线程 通常叫做 轻型的进程。它包含独立的栈和CPU寄存状态,每个线程共享其所附属进程的所有资源,包含打开的文件,内存页面,信号标识及分配内存等
线程比进程花费更小的CPU资源
在操作系统设计上,从进程演化出线程,最主要的目的就是更好的支持多处理器,并且减少进程上下文切换的开销。
线程和进程的关系是 线程属于进程,线程运行在进程空间内,同一进程所产生的线程共享同一内存空间,当进程退出锁产生的线程会被强制退出并清楚,一个进程至少需要一个线程来作为他的指令执行体,进程管理着资源(比如CPU,内存,文件等等)。而将线程分配到某个CPU上运行
线程按照其调度者可分为用户级线程和内核级线程两种。
用户级线程:主要解决的是上下文切换的问题,其调度过程由用户决定(程序开发者)
内核级线程:又内核调度实现
用户级线程要绑定内核级线程使用
默认情况下不能保证新线程和调用线程的执行顺序 (比如:赛跑)
每个进程内部的不同线程都有自己的唯一标识(ID),线程标识只在它所属的进程环境中有效
Sleep线程告诉系统,自己再一段时间内不被调度。