1⃣️Android中的執行緒可以分為主執行緒和子執行緒,主執行緒主要用來處理和介面相關的事,比如介面繪製和響應使用者的操作,為了確保使用者體驗,主執行緒必須確保其響應速度,所有任何時候我們都不應該在主執行緒中處理非常耗時的任務,否則會造成介面卡頓甚至ANR;而子執行緒的作用就是完成耗時的操作,確保主執行緒的響應速度。主執行緒和子執行緒之間的通訊是基於Handler機制
2⃣️除了Thread本身,在Android中可以扮演執行緒角色的還有很多,比如AsyncTask、IntentSevice、HandlerThread等,儘管他們的表現形式有別於傳統的執行緒,但他們的本質還是Thread,只不過結合了一些其他的功能,讓它們適用於不同的應用場景。AsyncTask封裝了執行緒池和Handler,它主要是為了開發者在使用子執行緒中能夠方便的更新UI;HandlerThread是一種具有訊息迴圈的執行緒,在它的內部可以使用Handler。IntentService內部採用HanderThread來執行任務,當任務執行完畢後IntentService會自動退出。
3⃣️在作業系統中,執行緒是作業系統排程的最小單元,同時執行緒又是一種受限的系統資源,即執行緒不可能無限制的產生,並且執行緒的建立和銷燬都會有相應的開銷。如果一個程序需要頻繁的建立子執行緒來執行任務,而每執行一次任務都需要重新建立和銷燬執行緒,這顯然不是高效的做法。正確的做法是採用執行緒池,一個執行緒池中會快取一定數量的執行緒,當我們建立執行緒後會將執行緒存入到執行緒池中,那麼當下次在需要使用執行緒時,就不用重複建立執行緒,而是直接從執行緒池中取出,這樣就節省了頻繁建立執行緒和銷燬執行緒的開銷。
1⃣️Android中的執行緒可以分為主執行緒和子執行緒,主執行緒主要用來處理和介面相關的事,比如介面繪製和響應使用者的操作,為了確保使用者體驗,主執行緒必須確保其響應速度,所有任何時候我們都不應該在主執行緒中處理非常耗時的任務,否則會造成介面卡頓甚至ANR;而子執行緒的作用就是完成耗時的操作,確保主執行緒的響應速度。主執行緒和子執行緒之間的通訊是基於Handler機制
2⃣️除了Thread本身,在Android中可以扮演執行緒角色的還有很多,比如AsyncTask、IntentSevice、HandlerThread等,儘管他們的表現形式有別於傳統的執行緒,但他們的本質還是Thread,只不過結合了一些其他的功能,讓它們適用於不同的應用場景。AsyncTask封裝了執行緒池和Handler,它主要是為了開發者在使用子執行緒中能夠方便的更新UI;HandlerThread是一種具有訊息迴圈的執行緒,在它的內部可以使用Handler。IntentService內部採用HanderThread來執行任務,當任務執行完畢後IntentService會自動退出。
3⃣️在作業系統中,執行緒是作業系統排程的最小單元,同時執行緒又是一種受限的系統資源,即執行緒不可能無限制的產生,並且執行緒的建立和銷燬都會有相應的開銷。如果一個程序需要頻繁的建立子執行緒來執行任務,而每執行一次任務都需要重新建立和銷燬執行緒,這顯然不是高效的做法。正確的做法是採用執行緒池,一個執行緒池中會快取一定數量的執行緒,當我們建立執行緒後會將執行緒存入到執行緒池中,那麼當下次在需要使用執行緒時,就不用重複建立執行緒,而是直接從執行緒池中取出,這樣就節省了頻繁建立執行緒和銷燬執行緒的開銷。