Android之线程池的使用

来源:互联网 发布:电脑双肩包 知乎 编辑:程序博客网 时间:2024/06/05 20:42

1.线程池就是事先将多个线程对象放到一个容器中,当使用的时候就不用new线程而是直接去池中拿线程即可,节省了开辟子线程的时间,提高的代码执行效率,也便于集中对线程管理。

2.线程池的调用:

public static class ThreadPool{        private ThreadPoolExecutor executor;        private int corePoolSize;//核心线程数        private int maximumPoolSize;//最大线程数        private long keepAliveTime;//保持活跃的时间,也即运作的时间        //构造函数:        public ThreadPool(int corePoolSize,int maximumPoolSize,long keepAliveTime){            this.corePoolSize = corePoolSize;            this.maximumPoolSize = maximumPoolSize;            this.keepAliveTime = keepAliveTime;        }        //线程池中执行的:        public void execute(Runnable r){            if(executor==null){                executor = new ThreadPoolExecutor(corePoolSize, maximumPoolSize, keepAliveTime, TimeUnit.SECONDS, new LinkedBlockingDeque<Runnable>(),                         Executors.defaultThreadFactory(), new AbortPolicy());            }            executor.execute(r);//见当前runnable对象传放在线程池中        }    }

3.项目中应该只能由一个线程池,所以应该将线程池设计为单例模式,代码如下:

private static ThreadPool mThreadPool;    public static ThreadPool getThreadPool(){        if(mThreadPool==null){            synchronized (ThreadManager.class) {                if(mThreadPool==null){                    int cpuNum = Runtime.getRuntime().availableProcessors();                    int count = cpuNum*2+1;//根据CPU的个数决定线程的个数                    mThreadPool = new ThreadPool(count,count,0);                }            }        }        return mThreadPool;    }
0 0
原创粉丝点击