亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

Android的線程池

標簽:
Android

Android中的线程池的概念来源于Java中的Executor,Executor是一个接口,真真的线程池的实现为ThreadPoolExecutor。ThreadPoolExecutor提供了一系列参数来配置线程池。Android的线程池主要分为4类。

一、线程池的优点:

  1. 重用线程池中的线程。

  2. 能有效控制线程池的最大并发数,避免大量的线程之间因相互抢占资源而导致阻塞的现象。

  3. 能够对线程进行简单的管理,并提供定时执行以指定间隔循环执行等功能。

二、Android主要的四类线程池

1.FixThreadPool

它是一种线程数量固定的线程池,当线程处于空闲状态时,它们并不会被回收,除非线程池被关闭了。

 ExecutorService fixedThreadPool = Executors.newFixedThreadPool(5);

2.CachedThreadPool

它是一种线程数量不定的线程池,它只有非核心线程,并且其最大线程数为Integer.MAX_VALUE。


ExecutorService cachedThreadPool = Executors.newCachedThreadPool(5);

3.ScheduledThreadPool

它的核心线程数是固定的,而非核心数是没有限制的,并且当非核心线程闲置时会立即被回收。


ExecutorService scheduledThreadPool = Executors.newScheduledThreadPool(5);

4.SingleThreadExecutor

这类线程内部只有一个核心线程,它确保所有的任务都在同一个线程中按顺序执行。


ExecutorService fixedThreadPool = Executors.newSingleThreadExecutor();

三、核心线程

核心线程会在线程中一直存活,即使它们都处于闲置状态。

四、非核心线程

非核心线程闲置时间超时就会被回收。

五、ThreadPoolExecutor遵守的规则

  1. 如果线程池中的线程数未达到核心线程数量,那么会直接启动一个核心线程来执行任务。

  2. 如果线程池中的线程数量已达到或者超过核心线程数量,那么任务会被插入到任务队列中排队等待执行。

  3. 如果无法将任务插入到队列中,这往往是由于队列已满,这时如果线程数还未达到线程池规定的最大值,那么会立刻启动一个非核心线程来执行任务。

  4. 如果线程数量已经达到线程池规定的最大值,那么就拒绝执行此任务。


作者:IT枫
链接:https://juejin.cn/post/6985570973323886623
来源:掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

點擊查看更多內容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消