android线程池的封装工具类
16lz
2021-01-23
整理下项目中遇到的轮子,后面做的时候直接方便移植
-
android线程池工具类
线程池工具类
主要用于后台服务中一直轮询的子线程,可以有效的管理线程的使用,再也不用new Thread().start()了
public class ThreadPoolManager{ private static final String TAG = "ThreadPoolManager"; private ExecutorService mExecutorService; // 线程池对象 /** * 类级的内部类,也就是静态类的成员式内部类,该内部类的实例与外部类的实例 * 没有绑定关系,而且只有被调用时才会装载,从而实现了延迟加载 */ private static class ThreadPoolManagerHolder { /** * 静态初始化器,由JVM来保证线程安全 */ private static ThreadPoolManager instance = new ThreadPoolManager(); } /** * 私有化构造方法 */ private ThreadPoolManager() { } public static ThreadPoolManager getInstance() { return ThreadPoolManagerHolder.instance; } /** * 初始化线程池 */ public void initThreadPool() { if (mExecutorService == null) { mExecutorService = Executors.newCachedThreadPool(); } } /** * 执行任务 * @param runnable 任务 */ public void executeRunable(Runnable runnable) { try { if (mExecutorService != null && !mExecutorService.isShutdown()) { mExecutorService.execute(runnable); } } catch (RejectedExecutionException e) { // 打印当前线程池中活跃的线程数量 int threadCount = ((ThreadPoolExecutor) mExecutorService).getActiveCount(); Log.d(TAG, "[executeRunable]: current alive thread count = " + threadCount); e.printStackTrace(); } } /** * 关闭线程池 */ public void shutdownExecutor() { if (mExecutorService != null && !mExecutorService.isShutdown()) { mExecutorService.shutdown(); mExecutorService = null; } }}
使用方法
/** * 初始化更新线程 */ public void initUpdateRunnable() { ThreadPoolManager.getInstance().initThreadPool(); ThreadPoolManager.getInstance().executeRunable(new Runnable() { @Override public void run() { // dos somethings } }); }// 关闭整个线程池ThreadPoolManager.getInstance().shutdownExecutor();
更多相关文章
- Android正确关闭线程
- Android 主线程子线程执行关系
- Android中工作线程与主线程同步方式
- Android 关闭线程(转)
- android kernel 初始化 2
- Android 多线程2
- Android MediaServer初始化流程