怎么设置线程池的拒绝策略
时间: 2023-09-24 12:13:19 浏览: 176
在Java中,可以通过ThreadPoolExecutor类的setRejectedExecutionHandler()方法来设置线程池的拒绝策略。以下是设置线程池拒绝策略的示例代码:
```java
int corePoolSize = 10; // 核心线程数
int maximumPoolSize = 20; // 最大线程数
long keepAliveTime = 60; // 线程空闲时间
TimeUnit unit = TimeUnit.SECONDS; // 时间单位
BlockingQueue<Runnable> workQueue = new ArrayBlockingQueue<>(100); // 任务队列
RejectedExecutionHandler handler = new ThreadPoolExecutor.AbortPolicy(); // 设置拒绝策略为AbortPolicy
ExecutorService executor = new ThreadPoolExecutor(corePoolSize, maximumPoolSize, keepAliveTime, unit, workQueue, handler);
```
在上述示例中,使用了AbortPolicy拒绝策略,你可以根据自己的需求选择其他的拒绝策略,比如CallerRunsPolicy、DiscardPolicy或DiscardOldestPolicy。
另外,如果你使用的是Executors工具类创建线程池,可以使用`ThreadPoolExecutor`的`setRejectedExecutionHandler()`方法来设置拒绝策略。示例如下:
```java
int corePoolSize = 10; // 核心线程数
ThreadPoolExecutor executor = (ThreadPoolExecutor) Executors.newFixedThreadPool(corePoolSize);
executor.setRejectedExecutionHandler(new ThreadPoolExecutor.AbortPolicy()); // 设置拒绝策略为AbortPolicy
```
通过调用`setRejectedExecutionHandler()`方法,将对应的拒绝策略对象传入,即可设置线程池的拒绝策略。
阅读全文