Android基础 -- Android线程池的使用

小伙伴们对于Thread、Runnable、Handler、AyscTask应该十分熟悉,并且借助它们完成了一个个炫酷的功能,那么关于线程池的了解呢?这边文章就和小伙伴一起来看看关于线程池的这些事1.什么是线程池线程池是1块缓存了一定线程数量的区域,用来复用线程和管理线程,如统一分配、调优、监控和控制最大并发数等优点:降低因线程创建销毁所带来的性能开销 重用缓存线程池的线程 提高...
摘要由CSDN通过智能技术生成

小伙伴们对于Thread、Runnable、Handler、AyscTask应该十分熟悉,并且借助它们完成了一个个炫酷的功能,那么关于线程池的了解呢?这边文章就和小伙伴一起来看看关于线程池的这些事

1.什么是线程池

线程池是1块缓存了一定线程数量的区域,用来复用线程和管理线程,如统一分配、调优、监控和控制最大并发数等

优点:

  • 降低因线程创建销毁所带来的性能开销 重用缓存线程池的线程
  • 提高线程响应速度和执行效率 通过重用线程 不需要创建线程即可马上执行 优化线程的执行顺序 避免大量线程因互相抢占系统资源而导致的阻塞现象

2.工作原理

线程中有6个核心参数

  • corePoolSize : 核心线程数 ,默认情况下,核心线程会一直存活(包括空闲状态)
  • maximumPoolSize:线程池所能容纳的最大线程数,当活动线程数达到该数值后,后续新的任务将会阻塞
  • keepAliveTime:非核心线程 限制超时时长,超过该时长,非核心线程就会被回收
  • unit:指定 keepAliveTime参数的时间单位,毫秒、秒等
  • workQueue:任务队列,通过线程池的execute方法提交的Runnable对象,将存储在该参数中
  • threadFactory:线程工厂(接口)用来为线程池创建新的线程 Thread newThread(Runnable r)

ThreadPoolExecutor是线程池的真正实现类

// 创建线程池对象如下
// 通过 构造方法 配置核心参数
   Executor executor = new ThreadPoolExecutor( 
                                              CORE_POOL_SIZE,
                                              MAXIMUM_POOL_SIZE,
                                              KEEP_ALIVE,
                                              TimeUnit.SECONDS, 
                                              sPoolWorkQueue,
                                              sThreadFactory 
                                               );

// 构造函数源码分析
    public ThreadPoolExecutor (int corePoolSize,
                               int maxi
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android Studio 中使用线程池需要以下步骤: 1. 创建一个线程池对象。可以使用 Executors 类中的静态方法来创建线程池对象,例如:`ExecutorService executor = Executors.newFixedThreadPool(3);`,这里创建了一个固定大小为3的线程池。 2. 创建一个实现 Runnable 接口的类,重写 run() 方法,将需要执行的操作放在 run() 方法中。 3. 将 Runnable 对象提交给线程池进行执行,可以使用 execute() 方法或 submit() 方法,例如:`executor.execute(new MyRunnable());`,这里将一个 MyRunnable 对象提交给线程池进行执行。 4. 当不需要使用线程池时,需要调用 shutdown() 方法关闭线程池。例如:`executor.shutdown();` 下面是一个完整的示例代码: ``` public class MainActivity extends AppCompatActivity { private ExecutorService executor; private TextView textView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); textView = findViewById(R.id.text_view); // 创建线程池对象 executor = Executors.newFixedThreadPool(3); // 提交任务 executor.execute(new MyRunnable()); executor.execute(new MyRunnable()); executor.execute(new MyRunnable()); } @Override protected void onDestroy() { super.onDestroy(); // 关闭线程池 executor.shutdown(); } private class MyRunnable implements Runnable { @Override public void run() { // 在这里执行需要执行的操作 // 可以更新 UI,但需要使用 runOnUiThread() 方法 runOnUiThread(new Runnable() { @Override public void run() { textView.setText("Hello World"); } }); } } } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值