導航:首頁 > 操作系統 > android線程對象

android線程對象

發布時間:2025-01-14 23:21:37

android中的線程和線程池

一、除了Thread外,扮演線程角色的還有:AsyncTask和IntentService,同時HandlerThread也扮演特殊的線程。

      IntentService:內部採用HandlerThread來執行,像一個後台線程,同時是一個服務,不容易被系統殺死。

二、HandlerThread的run方法是一個無限循環

三、IntentService中任務是排隊執行的

四、AsyncTask 

1、Android1.6之前串悄段桐行執行任務,1.6時候採用線程池裡的並行,Android3.0開始又開始串列(為了避免並發錯誤),單任可以並行。

2、AsyncTask必須在UI線程調用(不過這個不是絕對的,和版本有關燃腔系,API 16之前,API 16到 22, API 22以後) 參考一

原因:內部有靜態Handler,採用UI線程的Looper來處理消息,這就是為什麼AsyncTask必須在UI線程調用,因為子線程默認沒有Looper無法創建下面的Handler,程序會直接Crash

3、AsyncTask中有兩個線程池和一個Handler,一個線程池用啟坦於任務排隊,一個線程池用於真正的執行任務,InternalHandler用於將

執行環境從線程池切換到主線程

AsyncTask串列與並行

五、線程池

線程池中多餘的線程是如何回收的

⑵ android開發中線程有幾種狀態,分別是哪些

【答案】:1)、新建狀態(New):新創建了一個線程對象。
2)、就緒狀態(Runnable):線程對象創建後,前螞消其他線程調用了該對象的start()方法。該狀態的線程位於可運行線程池中,變得可運行,等待獲取CPU的使用權。
3)、運行狀態(Running):就緒狀態的線程獲取了CPU,執行run()方法。
4)、阻塞狀態(Blocked):阻塞狀態是線程因為某種原因放棄CPU使用權,暫時停止運行。直到線程進入就緒狀態,才有機會轉到運行狀態。阻塞的情況分三種:
(一)、等待阻塞慧知:運行的線程執行wait()方法,JVM會把該線程放入等待池中。
(二)、同步阻塞:運行的線程在獲取對象的同步鎖時,若該同步鎖被別的線程佔用,則JVM會把該線程放入鎖物卜池中。
(三)、其他阻塞:運行的線程執行sleep()或join()方法,或者發出了I/O請求時,JVM會把該線程置為阻塞狀態。當sleep()狀態超時、join()等待線程終止或者超時、或者I/O處理完畢時,線程重新轉入就緒狀態。
5)、死亡狀態(Dead):線程執行完了或者因異常退出了run()方法,該線程結束生命周期。
當調用start方法的時候,該線程就進入就緒狀態。等待CPU進行調度執行,此時還沒有真正執行線程。
當調用run方法的時候,是已經被CPU進行調度,執行線程的主要任務。

⑶ Android 中如何關閉線程

在android中開啟的線程用Thread.stop()來關閉是不會真正關閉的,當我們再次start線程的時候,會產生異常:Thread is already started.
針對這個問題可以在線程的run方法里,加一個判斷標志。例如:
class TestThread extends Thread{
public void run(){
while(isTrue){
//做你要做的事。}}}在需要關閉的時候,將flag置為false: isTrue=false;並且將運行的線程對象掛起然後置為null(假設開啟的線程對象為mTestThread) :
mTestThread.interrupt();
mTestThread=null;
再次用到的時候進行如下處理即可:
if(mTestThread==null){

⑷ 如何終止 android線程池中的任務

Executor 提供了管理終止的方法,以及可為跟蹤一個或多個非同步任務執行狀況而生成 Future 的方法。

可以關閉 ExecutorService,這將導致其拒絕新任務。提供兩個方法來關閉 ExecutorService。shutdown() 方法在終止前允許執行以前提交的任務,而 shutdownNow() 方法阻止等待任務啟動並試圖停止當前正在執行的任務。在終止時,執行程序沒有任務在執行,也沒有任務在等待執行,並且無法提交新任務。應該關閉未使用的 ExecutorService 以允許回收其資源。

通過創建並返回一個可用於取消執行和/或等待完成的 Future,方法 submit 擴展了基本方法 Executor.execute(java.lang.Runnable)。方法 invokeAny 和 invokeAll 是批量執行的最常用形式,它們執行任務 collection,然後等待至少一個,或全部任務完成(可使用 ExecutorCompletionService 類來編寫這些方法的自定義變體)。
Executors 類提供了用於此包中所提供的執行程序服務的工廠方法。

閱讀全文

與android線程對象相關的資料

熱點內容
公眾號吸粉源碼 瀏覽:120
你無權保存到你當前文件夾 瀏覽:473
lol巨神峰伺服器什麼時候開 瀏覽:258
程序員世界漫畫 瀏覽:224
安卓javaios開發 瀏覽:148
數據的運算是演算法嗎 瀏覽:649
諾基亞為什麼用的是原生安卓系統 瀏覽:767
android繼承fragment 瀏覽:580
單片機小系統設計 瀏覽:14
養老保險核演算法 瀏覽:894
伺服器代碼如何更改 瀏覽:586
易語言調用java 瀏覽:329
安卓sha加密 瀏覽:81
餘姚同城游戲app叫什麼 瀏覽:550
方維奪寶20源碼下載 瀏覽:870
shell編譯成功後退出 瀏覽:721
你們用什麼美妝鑒別的app嗎 瀏覽:118
手機設備信息在哪個文件夾 瀏覽:978
安卓應用亂怎麼解決 瀏覽:261
windowssocket網路編程 瀏覽:732