常见的线程池有哪些?线程池的参数;
时间: 2023-11-14 22:59:52 浏览: 44
常见的线程池有以下几种:
1. FixedThreadPool(固定大小线程池):线程池中的线程数量固定,任务提交后会立即执行。
2. CachedThreadPool(缓存线程池):线程池中的线程数量不固定,如果有空闲线程则会重用,否则会新建线程。适用于执行大量短期的异步任务。
3. ScheduledThreadPool(定时任务线程池):适用于需要定期执行任务的场景,可以设定每个任务的执行时间。
4. SingleThreadPool(单线程线程池):只有一个工作线程的线程池,适用于需要保证任务顺序执行的场景。
线程池一般具有以下参数:
1. corePoolSize(核心线程数):线程池中保持活动状态的最小线程数。
2. maximumPoolSize(最大线程数):线程池中允许存在的最大线程数。
3. keepAliveTime(线程空闲时间):当线程池中的线程数量超过核心线程数时,多余的空闲线程在被终止之前等待新任务的最长时间。
4. unit(时间单位):keepAliveTime 的时间单位。
5. workQueue(任务队列):用于保存等待执行的任务的阻塞队列。
6. threadFactory(线程工厂):用于创建新线程的工厂。
7. handler(饱和策略):当线程池和任务队列都满了,无法处理新任务时的处理策略。
相关问题
线程池哪些参数?怎么优化?
线程池的一些常用参数包括:核心线程数、最大线程数、队列容量、线程存活时间等。优化的方法包括:选择合适的线程池参数、合理地使用线程池、避免使用无限制的队列容量等。具体的优化方法需要根据具体的业务场景来确定。
ThreadPoolExecutor线程池有哪些参数?
ThreadPoolExecutor线程池有以下参数:
1. corePoolSize:核心线程数,即线程池中始终保持的线程数,即使它们处于空闲状态也不会被回收。
2. maximumPoolSize:最大线程数,即线程池中允许存在的最大线程数,包括空闲线程和阻塞队列中等待的线程。
3. keepAliveTime:线程空闲时间,即当线程池中的线程数量大于核心线程数时,空闲线程的存活时间。
4. TimeUnit:时间单位,用于指定keepAliveTime参数的时间单位。
5. workQueue:工作队列,用于存放等待执行的任务,可以选择不同类型的队列,如ArrayBlockingQueue、LinkedBlockingQueue、SynchronousQueue等。
6. ThreadFactory:线程工厂,用于创建线程,默认情况下使用Executors.defaultThreadFactory()方法创建线程。
7. RejectedExecutionHandler:拒绝策略,用于处理无法执行的任务,默认情况下使用AbortPolicy策略,即抛出RejectedExecutionException异常。其他策略还包括DiscardPolicy、DiscardOldestPolicy和CallerRunsPolicy。