Android创建线程池

版权声明:转载请注明本文链接 https://blog.csdn.net/qq_31844349/article/details/80572402

在一个庞大的android程序中,避免不了使用耗时操作,这些操作必须写到子线程中,因为如果在android系统设置的是在5秒内,android系统没有响应的话,就会报错ANR(程序无响应)的错误,随着android的程序的功能越来越多,使用的子线程也越来越多,那么android就引入了一个线程池的概念,我这次来看下如何来写线程池。这对于以后的开发有很大的帮助。

在此之前先看下android官方的注释,我这次就说一个线程池的使用。大概的意思创建一个线程池,在需要线程的时候调用execute来创建一个新的线程,线程池可以提高许多异步执行程序的性能,但是当一个线程在60秒内没有使用,则被线程池释放掉。

需要四个方法:私有化空参构造,单例,初始化,获取全局线程池。



前两个应该不用说的,第三个是定义一个ExecutorService的变量,newCachedThreadPool是当一个线程在60秒内没有使用,则释放。


接下来是初始化,在初始化的时候我们创建一个类MyApplication集成Application,重写OnCreate方法,初始化线程池

Model.getInstance().init(this);这里需要一个上下文,根据情况,这里填写this就好

别忘了在AndroidManifest.xml里面配置

如何使用,我就在这个线程池里面创建一个线程,在使用Ui线程来弹出一个吐司:

    Model.getInstance().getGlobalThreadPool().execute(new Runnable(){

         @Override
            public void run() {
                runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        Toast.makeText(MainActivity.this,"创建线程池成功",Toast.LENGTH_SHORT).show();
                    }
                });
            }   

    });


效果图:


猜你喜欢

转载自blog.csdn.net/qq_31844349/article/details/80572402