线程的概念
进程内相对独立的、拥有独立的堆栈和局部变量的的可执行单元。
线程的生命周期
创建,阻塞,执行,等待,死亡
Android线程的类型
分类的依据:根据线程的作用
UI thread(main thread):接收和处理用户事件输入,View更新;
系统类 thread:例如
1). binder(服务于进程间通信)
2). GC
3). debug connection
4). finalizersBackground thread(work thread):执行自定义task
Android线程的通信方式
workThread <---> workThread
管道(pipe)
关键字:一方写一方读、线程安全、转移的数据类型binary or character data、对应的PipedXXXX JAVA io Api、默认buffer=1024
writer如果关闭,连接既disconnected,但是buffer里面数据依旧可以被读取,如果reader closed,buffer 就被clear共享内存(Shared memory)
线程不安全、变量,对象,阻塞队列(BlockingQueue)
workThread <---->UI thread(更新UI线程的方式)
- Activity.runOnUiThread()
- View.post()/delayPost()
- Handler framework
//TODO:待专题梳理
- Broadcasts
- AsyncTask's onProgressUpdate()
如何保证线程安全 //TODO: 待专题梳理
主要有两种方法
- 锁关键字
- 并发包下面的容器和锁
1). java.util.concurrent.locks.ReentrantLock
2). java.util.concurrent.locks.ReentrantReadWriteLock