new ThreadPoolExecutor()方法,如何设置等待
时间: 2023-08-13 17:58:27 浏览: 65
在创建ThreadPoolExecutor实例时,可以通过设置一些参数来控制线程池的行为,包括等待队列的设置。下面是一个示例代码,展示如何设置线程池的等待队列:
```java
int corePoolSize = 5; // 核心线程数
int maxPoolSize = 10; // 最大线程数
long keepAliveTime = 5000; // 线程空闲时间
TimeUnit unit = TimeUnit.MILLISECONDS; // 时间单位
BlockingQueue<Runnable> workQueue = new ArrayBlockingQueue<>(100); // 等待队列
ThreadPoolExecutor executor = new ThreadPoolExecutor(corePoolSize, maxPoolSize, keepAliveTime, unit, workQueue);
// 设置拒绝策略,当任务无法被执行时的处理方式
executor.setRejectedExecutionHandler(new ThreadPoolExecutor.AbortPolicy());
// 提交任务到线程池
executor.execute(() -> {
// 执行具体的任务逻辑
});
```
在上述代码中,我们使用了ArrayBlockingQueue作为等待队列,它可以设置最大容量,当任务提交到线程池时,如果等待队列已满,则线程池会根据设置的拒绝策略进行处理。在示例中,我们使用了AbortPolicy拒绝策略,它会抛出RejectedExecutionException异常。
除了ArrayBlockingQueue,Java还提供了其他的等待队列实现,如LinkedBlockingQueue、SynchronousQueue等,可以根据实际需求选择合适的等待队列类型。