返回介绍

1、版本差别

发布于 2024-12-23 22:31:11 字数 1348 浏览 0 评论 0 收藏 0

1、线程池配置

android 3.0 以前线程池配置,代码如下所示:

private static final int CORE_POOL_SIZE = 5;//核心线程数量
private static final int MAXIMUM_POOL_SIZE = 128;//线程池中允许的最大线程数目
private static final it KEEP_ALIVE = 10;//当线程数目大于核心线程数目时,如果超过这个 keepAliveTime 时间,那么空闲的线程会被终止。
……  
private static final ThreadPoolExecutor sExecutor = new ThreadPoolExecutor(CORE_POOL_SIZE,  
    MAXIMUM_POOL_SIZE, KEEP_ALIVE, TimeUnit.SECONDS, sWorkQueue, sThreadFactory);  

android 3.0 以后更加灵活,根据 cpu 核数配置 CORE_POOL_SIZEMAXIMUM_POOL_SIZE

private static final int CPU_COUNT = Runtime.getRuntime().availableProcessors();//根据 cpu 的大小来配置核心的线程
private static final int CORE_POOL_SIZE = CPU_COUNT + 1;//核心线程数量
private static final int MAXIMUM_POOL_SIZE = CPU_COUNT * 2 + 1;//线程池中允许的最大线程数目
private static final int KEEP_ALIVE = 1;//空闲线程的超时时间

2、串行和并行,引用来自 这篇文章

  • android 1.5 以前的时候 execute 是串行执行的
  • android 1.6 直到 android 2.3.2 被修改为并行执行,执行任务的线程池就是 THREAD_POOL_EXECUTOR
  • android 3.0 以后,默认任务是串行执行的,如果想要并行执行任务可调用 executeOnExecutor(Executor exec, Params.. params) 。具体用法可参照 Android AsyncTask 的骗术

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文