文章目录
下面是关于线程池几个关键的问题分析:
1.为什么要使用线程池?
为了减少创建和销毁线程的次数, 让每个线程可以多次使用,可根据系统情况调整执行的线程数量,防止消耗过多内存。
2.Executors提供的四种线程池区别以及应用场景:
四种线程池分别是:newSingleThreadExecutor, newFixedThreadPool ,newCachedThreadPool,newScheduledThreadPool
newSingleThreadExecutor:创建一个单线程的线程池,这个线程池只有一个线程在工作,相当于单线程串行执行任务。适用:一个任务一个任务执行的场景
newFixedThreadPool:创建固定大小的线程池, 每次提交一个任务就创建一个线程,直到线程达到线程池的最大大小,线程池的大小一旦达到最大值就会保持不变。适用:执行长期的任务,性能好很多。
newCachedThreadPool:创建一个可缓存的线程池,如果线程池的大小超过了处理任务所需要的线程,那么就会回收部分空闲的线程, 当任务数增加时, 此线程池又可以智能添加新的线程来处理任务。此线程池不会对线程池大小做限制,线程池大小完全依赖操作系统或者JVM能够创建的最大线程大小。 适用:执