HandlerThread/IntentService以及線程池

HandlerThread

HandlerThread繼承了Thread,它是一種可以使用Handler的Thread,他默認(rèn)在run方法中創(chuàng)建looper開啟消息循環(huán)

IntentService

IntentService是一種特殊的Service,可用于后臺執(zhí)行耗時操作,當(dāng)任務(wù)執(zhí)行完成后會自動停止,由于IntentService是服務(wù)的原因,他的優(yōu)先級比普通的線程要高,適合執(zhí)行一些高優(yōu)先級的后臺任務(wù),IntentService內(nèi)部封裝了HandlerThread和Handler
IntentService在onCreat()方法中會構(gòu)造出HandlerThread和Handler對象,每次啟動IntentService,它的onStartCommand方法會被執(zhí)行,onStartCommand方法回調(diào)用onStart方法,在onStart中會通過handler發(fā)送消息,在handler的handleMessage方法中,會調(diào)用onHandleIntent()方法

Android中最常見的四類具有不同功能的線程池

  • FixedThreadPool
    線程數(shù)量固定的線程池,當(dāng)線程處于空閑狀態(tài)時,他們并不會被回收,除非線程池被關(guān)閉了,當(dāng)所有的線程處于活動狀態(tài)時,新任務(wù)都會處于等待狀態(tài),直到有線程空閑出來,由于FixedThreadPool只有核心線程,并且這些核心線程不會被回收,這意味著能更加快速的響應(yīng)外界的請求,F(xiàn)ixedThreadPool中核心線程沒有超時機(jī)制,并且任務(wù)隊(duì)列也沒有大小限制
  • CachedThreadPool
    線程數(shù)量不固定的線程池,它只有非核心線程,并且其最大線程數(shù)為Integer.MAX_VALUE,線程池中的空閑線程都有超時機(jī)制,這個超時時長為60秒,超過六十秒后線程會被回收
  • ScheduledThreadPool
    它的核心線程數(shù)是固定的,而非核心線程數(shù)是沒有限制的,并且非核心線程數(shù)空閑后會立即被回收
  • SingleThreadExecutor
    這類線程池內(nèi)部只有一個核心線程,它確保所有的任務(wù)都在同一個線程中按順序執(zhí)行。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容