關於Android執行緒池
-
前言
一般而言,我們在android程式程式碼中不要顯式的建立執行緒,而是要採取執行緒池(也就是ThreadPoolExecutor類)的方式建立。
-
關於執行緒池的幾個類
直接上圖
圖片.png
ThreadPoolExecutor的構造方法如下:
圖片.png
執行緒池新建執行緒的時候,如果當前執行緒總數小於 corePoolSize ,則新建的是核心執行緒;如果超過corePoolSize,則新建的是非核心執行緒。
2,maximumPoolSize:執行緒總數= 核心執行緒數 + 非核心執行緒數
3,keepAliveTime:超時時長
非核心執行緒如果長時間閒置,超過這個時長便被回收
4,unit
設定keepAliveTime的單位,MILLISECONDS : 毫秒 、SECONDS : 秒、MINUTES : 分、HOURS : 小時、DAYS : 天
5,workQueue:緩衝任務佇列
執行緒池的execute方法會將Runnable物件儲存起來,當所有的核心執行緒都有活幹,新新增的任務會被新增到這個佇列中等待處理,如果佇列滿了,則新建非核心執行緒執行任務。
6,threadFactory:執行緒工廠介面
只有一個new Thread(Runnable r)方法,可以認為是執行緒池建立新執行緒 。
7,handler:
這個主要是用來拋異常的,如果執行緒無法執行新任務一般會拋一個RejectedExecutionException異常。
另外,為了使用方便,java提供了四種執行緒池:
- newFixedThreadPool :定長執行緒池
- newCacheThreadPool:快取執行緒池
- newScheduledThreadPool:定長任務執行緒池
- newSingleThreadExecutor :建立一個單執行緒的執行緒池
-
簡單例項
圖片.png