導航:首頁 > 操作系統 > 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線程對象相關的資料

熱點內容
在線看網站源碼 瀏覽:253
呼吸燈電腦編程 瀏覽:134
樓月小說app是什麼意思 瀏覽:331
掌上旅遊php源碼 瀏覽:946
演算法座右銘 瀏覽:748
強迫員工安裝app是什麼 瀏覽:631
阿里雲伺服器如何架建網站 瀏覽:523
怎麼停止伺服器共享 瀏覽:772
db2連接資料庫命令 瀏覽:550
伺服器的操作系統選什麼好 瀏覽:629
剪力牆暗柱加密區域 瀏覽:30
linuxdump內存 瀏覽:326
originos內置壁紙在哪個文件夾 瀏覽:404
數據結構演算法pdf百度雲 瀏覽:877
胖子怎麼緩解壓力 瀏覽:151
pdf轉svg 瀏覽:147
linux開啟rewrite 瀏覽:338
程序員筆記本電腦買什麼好 瀏覽:774
一條App連簽禮包是什麼 瀏覽:103
周易六十四卦演算法 瀏覽:532