线程优化


背景介绍

了解线程的调度有利于我们开发项目

线程调度模型
1、分时调度模型:轮流获取,均分cpu时间
2、抢占式调度模型:优先级搞的获取 jvm采用
Android ui线程的优先级是如下 越小优先级越高


public static final int THREAD_PRIORITY_DEFAULT = 0;

常见的线程的方式

Thread 方式

优点:最简单,最常见异步方式
缺点:不易复用,频繁创建及销毁开销大
复杂场景不易使用

HandlerThread

适合长时间消息队列

IntentService

集成了Service 在内部创建了HandlerThread
执行在异步执行
优先级比较高,不容易被kill

AsyncTask

Android 提供的工具类
无需要自己处理线程切换

线程池

已复用,减少频繁创建,销毁时间
功能强大:并发数控等

Rxjava

由强大的scheduler 集合提供了强大的切换方式

线程使用准则
1、创建线程必须命名,这样方便定位

2、关键一步任务要监控 比如aop监控

3、设置合理的线程优先级


class ThreadPoolUtils {

    private static ExecutorService mService= Executors.newFixedThreadPool(5, new ThreadFactory() {
        @Override
        public Thread newThread(Runnable r) {
            Thread thread = new Thread(r);
            thread.setName("thread name");
            return thread;
        }
    });

    public static ExecutorService getService(){


        return   mService;

    }

}




  TOC