线程池

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):

        该方法和上一个方法类似,只不过可以指定线程数量。


线程池(二)中介绍线程池的内部原理、以及如何自定义线程池等。

以上是关于线程池的主要内容,如果未能解决你的问题,请参考以下文章

什么叫线程池?线程池如何使用?

多线程(六):线程池

多线程(六):线程池

十五、线程池(六)自动创建线程池的弊端

java 如何获得线程池中正在执行的线程数?

线程池参数与线程池调优