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