一种非常简便的实现Android多线程池的方法

开发Android过程中至少会遇到一个主线程,也称UI线程,这个线程是不允许阻塞的,否则会报错,比如最常见的获取网络资源、读写文件等操作,这些耗时操作都不能再主线程使用。这里介绍一个非常高效又非常简单实用的方法ExecutorService类。

ExecutorService类可以理解为线程池,开发者可以实例化一个该对象,在其中使用多个异步进行的操作。

ExecutorService接口继承了Executor接口,定义了一些生命周期的方法,如下定义。

public interface ExecutorService extends Executor {  
void shutdown();  
List<Runnable> shutdownNow();  
boolean isShutdown();  
boolean isTerminated();  
boolean awaitTermination(long timeout, TimeUnit unit)  
        throws InterruptedException;  
}  

1、shutdown方法:这个方法会顺次地关闭ExecutorService,当我们调用这个方法时,ExecutorService停止接受任何新的任务且等待已经提交的任务执行完成(已经提交的任务会分两类:一类是已经在执行的,另一类是还没有开始执行的),当所有已经提交的任务执行完毕后将会关闭ExecutorService。

2、awaitTermination方法:这个方法有两个参数,一个是timeout即超时时间,另一个是unit即时间单位。这个方法会使线程等待timeout时长,当超过timeout时间后,会监测ExecutorService是否已经关闭,若关闭则返回true,否则返回false。一般情况下会和shutdown方法组合使用。

在使用时其实很简单,加入我们有三个task,都是耗时操作,开辟三个线程分别进行该操作,实现方法如下:

private ExecutorService mExecutorService;
...
 mExecutorService = Executors.newSingleThreadExecutor();
 mExecutorService.execute(new Runnable() {
            @Override
            public void run() {
               task1();
    task2();
               task3();               
            }
        });

mExecutorService = Executors.newSingleThreadExecutor();
为实例化方法,在该类中还有其他几种实例化方法,每个方法有不同的作用,上面的代码是非常简单能够实现多线程的一种方法。



  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值