美文网首页
Android线程池管理-ThreadPoolHelp

Android线程池管理-ThreadPoolHelp

作者: luoxudong | 来源:发表于2017-09-18 14:19 被阅读0次

在app项目中多线程使用越来越频繁,线程管理非常重要。根据工作以前的项目经验,最近整理了一份线程池管理工具库。
ThreadPoolHelp是一款Android平台下简单易用的线程池管理工具,包大小只有9K,能满足常用的多线程管理需求。

1、简单用法
a) 使用默认线程池
这是使用线程池最简单的方式,使用默认线程池处理线程任务。

new ThreadTaskObject(){
@Override
public void run(){
    //线程执行体
}
}.start();

b) 指定线程池
通过指定线程池,可以把不同功能类型的线程分组,比如指定线程池“newPool”,线程任务将在线程池“newPool”中运行。

new ThreadTaskObject("newPool"){
@Override
public void run(){
//线程执行体
}
}.start();

以上两种线程池的用法能满足开发基本需求,如需要更加详细的配置,参考进阶用法。

2、进阶用法
a) 创建一个可缓存线程池
该线程池的特点是:如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。线程池为无限大,当执行第二个任务时第一个任务已经完成,会复用执行第一个任务的线程,而不用每次新建线程。
默认线程池

ThreadPoolHelp.Builder.cached().builder().execute(newRunnable(){
@Override
public void run(){
//线程执行体
});

指定线程池
其中“poolName”为线程池名称

ThreadPoolHelp.Builder.cached().name("poolName").builder().execute(newRunnable(){
@Override
public void run(){
//线程执行体
});

b) 创建一个定长线程池
该线程池的特点是,可控制线程最大并发数,超出的线程会在队列中等待。
默认线程池
其中size为固定线程池大小

ExecutorServiceexecutorService=ThreadPoolHelp.Builder.fixed(size).builder();
executorService.execute(newRunnable(){
@Override
public void run(){
//线程执行体
});

指定线程池
其中“poolName”为线程池名称,size为固定线程大小

ExecutorServiceexecutorService=ThreadPoolHelp.Builder.fixed(size).name("poolName").builder();
executorService.execute(newRunnable(){
@Override
public void run(){
//线程执行体
});

c) 创建一个单线程化的线程池
该线程池的特点是,它只会用唯一的工作线程来执行任务,保证所有任务按照指定顺序(FIFO, LIFO, 优先级)执行。
默认线程池

ThreadPoolHelp.Builder.single().builder().execute(newRunnable(){
@Override
public void run(){
//线程执行体
});

指定线程池
其中“poolName”为线程池名称

ThreadPoolHelp.Builder.single().name("poolName").builder().execute(newRunnable(){
@Override
public void run(){
//线程执行体
});

d) 创建一个定长线程池定时任务
该线程池的特点是,支持定时及周期性任务执行。

ScheduledExecutorServiceexecutorService=ThreadPoolHelp.Builder.schedule(size).scheduleBuilder();
executorService.schedule(newRunnable(){
@Override
public void run(){
//线程执行体
},3000,TimeUnit.MILLISECONDS);

e) 创建一个自定义的线程池
该线程池的特点是,如果以上都不能满足需求,开发者可以根据需求自己设置参数。

ExecutorServiceexecutorService=ThreadPoolHelp.Builder.custom(corePoolSize,maximumPoolSize,keepAliveTime,unit,workQueue).builder());
executorService.execute(newRunnable(){
@Override
public void run(){
//线程执行体
});

源码地址
转载请写明出处:http://www.luoxudong.com/?p=12

相关文章

  • Android线程池管理-ThreadPoolHelp

    在app项目中多线程使用越来越频繁,线程管理非常重要。根据工作以前的项目经验,最近整理了一份线程池管理工具库。Th...

  • 线程池创建和相关知识

    线程池创建(单例):Android线程池得要这么用 - 简书 线程池相关知识:Android开发之线程池使用总结 ...

  • Android高并发问题处理和线程池ThreadPool线程池源

    Android实现高性能,高并发,可延时线程池管理 为什么要使用线程池? 1.)new Thread()的缺点 每...

  • android线程管理--线程池

    为什么要引入线程池? 1.new Thread()的缺点 每次new Thread()耗费性能 调用new Thr...

  • 线程池设计

    线程池管理器(CustomThreadPool): 用于创建并管理线程池工作线程(CustomWorker):线程...

  • Android线程池的使用

    一、线程与线程池,为什么要使用线程池 1、Android中的线程 在Android中有主线程和子线程的区分。主线程...

  • 线程池

    线程池组件 1、线程池管理器(ThreadPoolManager):用于创建并管理线程池 2、工作线程(WorkT...

  • 线程池

    话题:线程池Android中的线程池有哪些?它们的区别是什么?为什么要使用线程池? 线程是Android里面一个很...

  • 线程池

    线程池 a. 基本组成部分: 1、线程池管理器(ThreadPool):用于创建并管理线程池,包括创建线程池,销毁...

  • Android线程管理 - ExecutorService线程池

    1. 为什么要引入线程池? 如果有100个下载任务,每次 new Thread(),很耗性能; new多个线...

网友评论

      本文标题:Android线程池管理-ThreadPoolHelp

      本文链接:https://www.haomeiwen.com/subject/qthbsxtx.html