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

熱點內容
河北省社保權益單app怎麼下載 瀏覽:286
pdf單頁列印 瀏覽:413
androidwifi定位源碼 瀏覽:834
強迫症解壓頭盔 瀏覽:509
聯想rd450伺服器如何重啟 瀏覽:410
程序員找事 瀏覽:588
印度程序員加班電影 瀏覽:561
單片機如何判斷字元串 瀏覽:756
為什麼伺服器晚上會崩潰 瀏覽:912
linux編譯o文件 瀏覽:530
廣州文檔加密公司 瀏覽:528
如何打開python項目進行測試 瀏覽:90
linuxlo0 瀏覽:81
手工編程的步驟有哪些 瀏覽:936
怎麼能加密呼叫 瀏覽:851
svn刪除命令 瀏覽:313
python數據聚合 瀏覽:533
微信顯示無法連接到伺服器是什麼意思 瀏覽:219
吃雞dns伺服器地址 瀏覽:390
滑鼠轉vb命令 瀏覽:78