
一、Android中的線程
1.1 定義
線程,可以看作是進(jìn)程的實(shí)體,CPU調(diào)度資源的基本單位。本質(zhì)上是一串命令(也就是程序代碼),執(zhí)行線程可以理解為把命令交給操作系統(tǒng)去執(zhí)行。
Java中的線程:Java中默認(rèn)一個(gè)進(jìn)程只有一個(gè)線程,稱之為主線程。其它線程稱之為子線程也叫工作線程。
Android中的線程:Android沿用了Java線程模型,Android中主線程也叫UI線程。Android3.0以后,系統(tǒng)要求網(wǎng)絡(luò)訪問(wèn)必須在子線程中進(jìn)行。
1.2 特點(diǎn)
線程基本不擁有系統(tǒng)資源,只擁有在運(yùn)行時(shí)必不可少的系統(tǒng)資源(程序計(jì)數(shù)器,一組寄存器和棧)??梢圆l(fā)執(zhí)行。
二、Android中線程分類及作用
2.1 按用途分類:
- 主線程:又叫UI線程,由ActivityThread管理
作用:運(yùn)行四大組件,和用戶交互以及更新UI。
- 子線程
作用:處理耗時(shí)操作,比如網(wǎng)絡(luò)請(qǐng)求,復(fù)雜計(jì)算等。
2.2 按形態(tài)分類:
- Thread
說(shuō)明:基本的線程,可以做一些簡(jiǎn)單的操作,經(jīng)常配合Handler使用。
相關(guān)面試題:線程的幾種狀態(tài)、線程安全和同步問(wèn)題、如何解決線程安全問(wèn)題,下文都有概述。
Android 多線程:Thread理解和使用總結(jié)
- AsyncTask
說(shuō)明:輕量級(jí)的異步操作類,方便更新UI。
相關(guān)面試題:AsyncTask的原理、AsyncTask的優(yōu)點(diǎn)和缺點(diǎn)。
Android 多線程:AsyncTask理解和使用總結(jié)
- HandlerThread
說(shuō)明:一個(gè)使用了Looper、Handler的線程。
主要作用:方便地實(shí)現(xiàn)每隔幾秒更新數(shù)據(jù)的功能,如價(jià)格,圖片等。比Timer使用方便并且內(nèi)存占用低。
Android 多線程:HandlerThread理解和使用總結(jié)
- IntentService
說(shuō)明:封裝了HandlerThread和一個(gè)Handler,是HandlerThread的具體使用,由于屬于Service,若以比單純的線程優(yōu)先級(jí)更高。
Android 多線程:IntentService理解和使用總結(jié)
Android進(jìn)程優(yōu)先級(jí)
- 線程池
相關(guān)面試題:線程池的使用、線程池的種類以及區(qū)別。
Android 多線程:線程池理解和使用總結(jié)
參考資料:
Android 中三種啟用線程的方法
Android中AsyncTask使用詳解
Android線程管理之Thread使用總結(jié)
Android HandlerThread 完全解析
IntentService 示例與詳解
《Android開發(fā)藝術(shù)探索》