線程的概念
進(jìn)程內(nèi)相對獨(dú)立的、擁有獨(dú)立的堆棧和局部變量的的可執(zhí)行單元。
線程的生命周期
創(chuàng)建,阻塞,執(zhí)行,等待,死亡
Android線程的類型
分類的依據(jù):根據(jù)線程的作用
UI thread(main thread):接收和處理用戶事件輸入,View更新;
系統(tǒng)類 thread:例如
1). binder(服務(wù)于進(jìn)程間通信)
2). GC
3). debug connection
4). finalizersBackground thread(work thread):執(zhí)行自定義task
Android線程的通信方式
workThread <---> workThread
管道(pipe)
關(guān)鍵字:一方寫一方讀、線程安全、轉(zhuǎn)移的數(shù)據(jù)類型binary or character data、對應(yīng)的PipedXXXX JAVA io Api、默認(rèn)buffer=1024
writer如果關(guān)閉,連接既disconnected,但是buffer里面數(shù)據(jù)依舊可以被讀取,如果reader closed,buffer 就被clear共享內(nèi)存(Shared memory)
線程不安全、變量,對象,阻塞隊列(BlockingQueue)
workThread <---->UI thread(更新UI線程的方式)
- Activity.runOnUiThread()
- View.post()/delayPost()
- Handler framework
//TODO:待專題梳理 - Broadcasts
- AsyncTask's onProgressUpdate()
如何保證線程安全 //TODO: 待專題梳理
主要有兩種方法
- 鎖關(guān)鍵字
- 并發(fā)包下面的容器和鎖
1). java.util.concurrent.locks.ReentrantLock
2). java.util.concurrent.locks.ReentrantReadWriteLock