线程池
Posted Java后端干货
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了线程池相关的知识,希望对你有一定的参考价值。
1、线程池是什么以及为什么要用线程池
线程池顾名思义是存放线程的池子。一般情况下,每一个新任务都新建一个线程去处理,处理完毕之后自动销毁。但是这种情况主要存在两个问题,1、频繁的创建和销毁线程会增加Linux系统的开销。2、并发量大或者任务周期长的情况下,应用中会存在大量线程,会造成应用性能急剧下降更严重甚至会导致Linux系统卡死。因此需要一个线程池来管理并且调度到来的任务,可以把线程池理解为:线程池=线程集合+任务队列,线程池会保持一定量的活动线程来等待到来的任务,当任务执行完毕之后将线程返回到线程池中复用而不是销毁线程。
2、JDK对线程池的支持
ThreadPoolExecutor表示一个线程池,它继承自ExecutorService接口,Executors以线程池工厂的角色存在,其中定义了以下创建线程池实例的方法:
A、newFixedThreadPool(int nThreads):
创建一个线程数量为nThreads,队列大小为Integer.MAX_VALUE的线程池。
B、newSingleThreadExecutor():
创建一个线程数量为1,队列大小为Integer.MAX_VALUE的线程池。
C、newCachedThreadPool():
创建一个线程数量最大为Integer.MAX_VALUE的线程池,当线程池内没有空闲线程的时候,会尝试新建线程并复用,应当谨慎使用该方法。
D、newSingleThreadScheduledExecutor():
创建一个线程大小为1的可调度执行的线程池。返回ScheduledExecutorService类的实例,该类提供schedule等调度方法。
E、newScheduledThreadPool(int corePoolSize):
该方法和上一个方法类似,只不过可以指定线程数量。
线程池(二)中介绍线程池的内部原理、以及如何自定义线程池等。
以上是关于线程池的主要内容,如果未能解决你的问题,请参考以下文章