CallerRunsPolicy怎么实现
时间: 2023-07-27 16:23:08 浏览: 75
CallerRunsPolicy是Java中Executor框架中的一种线程池拒绝策略,它的作用是当线程池的任务队列已满时,直接在调用线程中执行被拒绝的任务。
具体实现如下:
1. 实现RejectedExecutionHandler接口,重写rejectedExecution方法。
```
public class CallerRunsPolicy implements RejectedExecutionHandler {
@Override
public void rejectedExecution(Runnable r, ThreadPoolExecutor executor) {
if (!executor.isShutdown()) {
// 在调用线程中直接执行被拒绝的任务
r.run();
}
}
}
```
2. 在创建ThreadPoolExecutor时,将CallerRunsPolicy对象作为参数传入。
```
ThreadPoolExecutor executor = new ThreadPoolExecutor(corePoolSize, maximumPoolSize, keepAliveTime, TimeUnit.SECONDS, new LinkedBlockingQueue<>(queueSize), new CallerRunsPolicy());
```
这样,当线程池的任务队列已满时,被拒绝的任务将会在调用线程中直接执行。
阅读全文