Android之Executor線程池介紹

Executor

Executor是Java中的概念,是一個接口,真正的線程池實現是ThreadPoolExecutor。

它提供了一系列的參數來配置不同的線程池。

ThreadPoolExecutor

ThreadPoolExecutor是線程池的真正實現,他的構造方法提供了一系列參數來配置線程池,

public ThreadPoolExecutor(
            int corePoolSize,//核心線程數
            int maximumPoolSize,//最大線程數
            long keepAliveTime, //非核心線程的超時時間
            TimeUnit unit,//單位
            BlockingQueue<Runnable> workQueue,//任務隊列 
            ThreadFactory threadFactory//線程工廠
            )

除了這些參數外還有個很不常用的參數RejectedExecutionHandler handler。

當線程池無法執行新任務時(任務隊列滿了或者無法成功執行)會調用handler的rejectExecutionException。

線程池的類別

在Executors裏面對應的線程池有一下幾種實現:

cached ThreadPool

緩存線程池的特點是它會緩存之前的線程,新提交的任務可以運行在緩存的線程中,即實現了前文所述的第一個優勢。

fixed ThreadPool

cachedThreadPool的一個特點是——新提交的任務沒有空閒線程可以執行了,就會創建一個新的線程。而fixedThreadPool不會這樣,它會將任務保存起來,等到有空閒線程再執行。即實現了前文所述的第二個優勢。

scheduled ThreadPool

scheduled ThreadPool的特點是可以實現任務的調度,比如任務的延遲執行和週期執行。

代碼實例

ThreadPoolExecutor executor1 = (ThreadPoolExecutor)Executors.newCachedThreadPool();
ThreadPoolExecutor executor2 = (ThreadPoolExecutor)Executors.newFixedThreadPool(4);
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章