【多線程】五、線程池

相關文章:
【多線程】一、線程狀態切換
【多線程】二、線程優先級&守護線程
【多線程】三、線程訪問變量
【多線程】四、線程異常抓捕
【多線程】五、線程池
【多線程】六、鎖與同步
【多線程】七、阻塞隊列
【多線程】八、異步計算結果獲取
【多線程】九、Android異步任務

爲解決頻繁線程創建、銷燬帶來的不必要損耗,推薦使用線程池。

ThreadPoolExecutor(
	corePoolSize, // 核心線程數,核心線程一直存活(即使空閒,除非allowCoreThreadTimeout(true))
	maximumPoolSize, // 最大線程數
	keepAliveTime, // 非核心線程閒置時長,超時線程會被回收
	timeUnit, // 時間單位,可用TimeUnit.MILLISECONDS
	workQueue, // 任務隊列,BlockingQueue<Runnable>
	threadFactory, // 線程創建工程
	rejectedExecutionHandler, // 任務拒絕處理器, 默認ThreadPoolExecutor.AbortPolicy拋異常;
	);

@see AsyncTask::THREAD_POOL_EXECUTOR
Created with Raphaël 2.2.0新任務到達可建核心線程?創建線程執行服務結束任務隊列已滿?進隊列等待可建非核心線程?創建線程執行拒絕執行yesnoyesnoyesno
預置線程池 說明
FixedThreadPool 固定核心線程數且無超時關閉,任務隊列無上限
線程全忙時,新任務一直等待
適用請求頻繁,數量基本固定的任務
CachedThreadPool 不定非核心線程數(MAX_INT)超時60s關閉
空任務隊列(SynchronousQueue<Runnable>),新任務立即執行
適用數量龐大,耗時較少的任務
ScheduledThreadPool 核心線程數固定無超時關閉
非核心線程無限制(MAX_INT)空閒立即回收
空任務隊列,新任務立即執行
適用於定時任務 或 週期性執行的重複任務
SingleThreadPool 單核心線程,確保任務順序執行(串行)
單線程模型可避免同步問題
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章