速读Java线程池
一、前言 线程池是开发中绕不开的一个知识点 。对于移动开发而言,网络框架、图片加载、AsyncTask、RxJava, 都和线程池有关。正因为线程池应用如此广泛,所以也成了面试的高频考点。 我们今天就来讲讲线程池的基本原理和周边知识。先从线程的生命周期开始。 二、线程生命周期 线程是程序执行流的最小单元。Java线程可分为五个阶段: 新建(New): 创建Thread对象,并且未调用start(); 就绪(Runnable): 调用start()之后, 等待操作系统调度; 运行(Running): 获取CPU时间分片,执行 run()方法中的代码; 阻塞(Blocked): 线程让出CPU,进入等待(就绪); 终止(Terminated): 自然退出或者被终止。 线程的创建和销毁代价较高,当有大量的任务时,可复用线程,以提高执行任务的时间占比。如上图,不断地 Runnable->Runing->Blocked->Runnable, 就可避免过多的线程创建和销毁。此外,线程的上下文切换也是开销比较大的,若要使用线程池,需注意设置合理的参数,控制线程并发。 三、Threa...