线程池的等待时间以及拒绝策略
时间: 2023-10-26 12:39:05 浏览: 27
线程池的等待时间是指当任务队列已满,无法再接受新任务时,新提交的任务等待被执行的时间。等待时间过长可能会导致任务处理效率低下,而等待时间过短则可能会导致任务被拒绝执行。因此,需要根据任务的性质和线程池的负载情况来合理设置等待时间。
线程池的拒绝策略是指当任务队列已满,无法再接受新任务时,对新提交的任务的处理方式。常见的拒绝策略有四种:
1. AbortPolicy(默认策略):直接抛出RejectedExecutionException异常,阻止系统正常运行。
2. CallerRunsPolicy:把任务回退到调用者执行,这样可以降低系统的负载。
3. DiscardPolicy:直接丢弃任务,不做任何处理。
4. DiscardOldestPolicy:丢弃任务队列中最早的任务,然后重新提交新任务。
选择合适的拒绝策略可以避免任务丢失和系统崩溃等问题。
相关问题
线程池的参数 和拒绝策略
线程池的参数包括:
1. 核心线程数(corePoolSize):线程池中的基本线程数,即在没有任务需要执行时线程池的大小。
2. 最大线程数(maximumPoolSize):线程池中允许存在的最大线程数。
3. 非核心线程空闲时间(keepAliveTime):当线程池中的线程数量大于 corePoolSize 时,如果这些线程在执行完任务后处于空闲状态的时间超过了 keepAliveTime,则它们将被终止。
4. 队列(workQueue):用于存放等待执行任务的阻塞队列。常用的队列有 ArrayBlockingQueue、LinkedBlockingQueue、SynchronousQueue 等。
5. 线程工厂(threadFactory):用于创建新线程的工厂类。
拒绝策略指的是当线程池中的任务队列已满且线程池中的线程数达到最大线程数时,新提交的任务会被拒绝执行的处理策略。常用的拒绝策略有:
1. AbortPolicy(默认):直接抛出一个 RejectedExecutionException 异常,阻止系统正常工作。
2. CallerRunsPolicy:由提交任务的线程来执行这个任务。这样可以减缓提交任务的速度。
3. DiscardOldestPolicy:丢弃最早的任务,然后提交新的任务。
4. DiscardPolicy:直接丢弃提交的任务。
Java线程池拒绝策略
Java线程池提供了一种管理并发任务执行的方式,其中包括一种机制来处理当线程池达到最大容量时接收到的新任务。当线程池饱和并拒绝新任务时,会根据预设的拒绝策略来决定如何处理。Java中的`ThreadPoolExecutor`类提供了几种不同的拒绝策略:
1. **AbortPolicy**(默认策略):这是最严格的策略,当线程池已满并且没有空闲线程处理新的任务时,会抛出`RejectedExecutionException`异常,这通常会导致应用程序崩溃。
2. **CallerRunsPolicy**:在这种情况下,新任务不会被放入队列,而是直接由调用者(通常主线程)执行。这对于短小的任务或者在短时间内可重试的任务可能是有用的。
3. **DiscardOldestPolicy**:线程池会丢弃队列中最老的任务,并尝试为新的任务创建线程。如果仍然无法处理,同样抛出异常。
4. **DiscardPolicy**:与`DiscardOldestPolicy`类似,但不同的是,新任务直接拒绝,而不会尝试重新安排旧的任务。
5. **TimeBlockingQueue`的`AbortPolicy`变体(仅限于`ScheduledThreadPoolExecutor`):如果队列已满,新任务将等待一段时间,然后被丢弃。
每个策略都有其适用场景,开发者可以根据应用的需求和预期错误处理来选择合适的拒绝策略。相关问题如下:
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)