Android 效能最佳化之執行緒
在這裡向大家推薦一下我的課程,課程已經上線一年半的時間,受到了廣泛的好評,不僅可以幫助大家在短時間內體系化掌握Android效能最佳化的各種手段,更值得一提的是幫助很多小夥伴成功的進入了大廠,借用一位學員的評價:吃透課程內容,簡歷亮點頻出,面試官肯定難不倒你!
1、背景
對於 Android 的效能最佳化,我們一般重視的都是啟動速度、卡頓等較為明顯的問題。然而在這些明顯的問題之下還存在一些不明顯但是難以線上定位的問題,比如這篇文章要說的執行緒。
2、相關的問題
2.1 非同步一定會變快嗎?
為了提升主執行緒的響應性我們很正常的會建立非同步執行緒來執行耗時任務,然而非同步一定會使 App 整體的執行變快嗎?尤其是任務非常密集的時候,你確定嗎?
2.2 一個執行緒池就可以通吃了嗎?
基於封裝的思想以及統一管理的目的,專案中我們一般會提供一個執行緒池供所有研發同學使用,但是每一個任務不同的獨特性決定了一個執行緒池是無法適應所有任務的執行。因此我們需要對任務進行分級,根據任務的不同來決定任務執行的執行緒池。
2.3 執行緒的優先順序怎麼設定才能起作用?
執行緒是可以設定優先順序的,但是不合理的優先順序設定只會加劇資源的爭搶或者導致優先順序設定不生效。
2.4 OutOfMemoryError: pthread_create 是什麼原因,如何規避?
如果對於以上三個問題來說只是暗藏的問題的話,那這個 pthread_create 問題的表現則是崩潰,會直接影響使用者的實際體驗。而這類問題在實際使用者使用的線上,是比較難以解決的。
3、破解之道
3.1 鎖定執行緒建立位置
對於執行緒收斂最重要的第一點就是要鎖定目前專案中所有執行緒的建立者,包括了業務上的執行緒以及三方庫中的執行緒。
3.2 非同步封裝
接下來我們對專案中所使用到的非同步方式進行封裝,其中最主要的是執行緒池的封裝,將執行緒池根據需要進行封裝並且根據任務型別來區分,從而實現不同型別的任務執行於不同型別的執行緒池中。
3.3 執行緒收斂
專案中存在建立執行緒的地方非常多:原生執行緒池、封裝執行緒池、AsyncTask、RxJava、IntentService、HandlerThread、野執行緒等等。首先要將執行緒建立這一步掌握住,否則無法進行執行緒收斂,那接下來的工作根本無法進行。
4、總結
本文初步總結了 Android 專案中由執行緒引發的各種問題以及解決之道,有需要歡迎學習我的課程。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4422/viewspace-2826549/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Android多執行緒之執行緒池Android執行緒
- Android執行緒管理之ExecutorService執行緒池Android執行緒
- Android 執行緒優化之執行緒池shutdown方法Android執行緒優化
- web-worker 獨立執行緒,效能最佳化Web執行緒
- Android多執行緒之IntentServiceAndroid執行緒Intent
- Android執行緒管理之ThreadPoolExecutor自定義執行緒池Android執行緒thread
- Java 效能調優:最佳化 GC 執行緒設定JavaGC執行緒
- 多執行緒-執行緒控制之休眠執行緒執行緒
- 多執行緒-執行緒控制之加入執行緒執行緒
- 多執行緒-執行緒控制之禮讓執行緒執行緒
- 執行緒控制之休眠執行緒執行緒
- 多執行緒-執行緒控制之守護執行緒執行緒
- Android的執行緒和執行緒池Android執行緒
- 二. 執行緒管理之執行緒池執行緒
- Java多執行緒之執行緒中止Java執行緒
- 多執行緒系列之 執行緒安全執行緒
- iOS 多執行緒之執行緒安全iOS執行緒
- iOS多執行緒之執行緒安全iOS執行緒
- android 主執行緒和子執行緒之間的訊息傳遞Android執行緒
- Android 效能優化之使用執行緒池處理非同步任務Android優化執行緒非同步
- Android程式框架:執行緒與執行緒池Android框架執行緒
- Android執行緒篇(二)Java執行緒池Android執行緒Java
- Java 執行緒池最佳化Java執行緒
- java多執行緒系列之執行緒池Java執行緒
- java執行緒之守護執行緒和使用者執行緒Java執行緒
- Android開發之執行緒間通訊Android執行緒
- android執行緒start()、interrupt()之重複使用Android執行緒
- android程式與執行緒詳解二:執行緒Android執行緒
- Android執行緒池Android執行緒
- RocketMQ(八):高效能探祕之執行緒池MQ執行緒
- java之執行緒Java執行緒
- Java多執行緒之—Synchronized方式和CAS方式實現執行緒安全效能對比Java執行緒synchronized
- 大話Android多執行緒(三) 執行緒間的通訊機制之HandlerAndroid執行緒
- java多執行緒之執行緒的基本使用Java執行緒
- java--多執行緒之後臺執行緒Java執行緒
- 執行緒安全與鎖最佳化執行緒
- mongodb核心原始碼實現及效能最佳化:常用高併發執行緒模型設計及mongodb執行緒模型最佳化實踐MongoDB原始碼執行緒模型
- javascript執行緒及與執行緒有關的效能優化JavaScript執行緒優化