【366、线程池是如何创建,有哪些参数,分别起什么作用】

14 阅读2分钟

线程池是一种常见的并发编程模型,它通过维护一组可重用的线程来提高程序的效率和响应速度。线程池的创建主要涉及以下参数:

  1. corePoolSize:线程池中最小的线程数量。当提交任务时,如果线程池中的线程数量小于corePoolSize,则会创建新的线程来处理任务。如果线程池中的线程数量已经达到corePoolSize,则将任务放入阻塞队列中等待被处理。
  2. maximumPoolSize:线程池中最大的线程数量。当提交任务时,如果线程池中的线程数量已经达到maximumPoolSize,则会根据设置的RejectedExecutionHandler策略来处理任务。
  3. keepAliveTime:非核心线程空闲超时时间。如果线程池中的线程数量超过corePoolSize,且有一些线程在一段时间内没有处理任务,则这些线程会被回收,直到线程池中的线程数量等于corePoolSize。
  4. workQueue:任务队列,用来存放还未被执行的任务。常见的队列类型有ArrayBlockingQueue、LinkedBlockingQueue、SynchronousQueue等。
  5. threadFactory:线程工厂,用来创建新的线程。如果没有显式指定线程工厂,则默认使用Executors中的DefaultThreadFactory。
  6. handler:拒绝策略,用来处理线程池中已满,无法处理新任务的情况。常见的策略有AbortPolicy、CallerRunsPolicy、DiscardPolicy和DiscardOldestPolicy。

创建线程池的步骤一般为:

  1. 使用ThreadPoolExecutor类或Executors类中提供的静态方法创建线程池对象。
  2. 为线程池设置参数,包括corePoolSize、maximumPoolSize、keepAliveTime、workQueue、threadFactory和handler等。
  3. 提交任务给线程池处理。

通过合理设置线程池的参数,可以有效地控制线程池的并发度和任务处理能力,提高程序的效率和响应速度。