java创建一个可以容纳20个线程的线程池,并且有100个任务同时执行时任务可以等待但是不能拒绝
时间: 2024-02-24 16:55:54 浏览: 25
您可以使用Java内置的线程池ExecutorService来创建一个可以容纳20个线程的线程池,并且设置队列的最大长度为100,这样就可以满足您的需求。
下面是一个示例代码:
```java
ExecutorService executorService = new ThreadPoolExecutor(
20, // 核心线程数
20, // 最大线程数
0L, TimeUnit.MILLISECONDS, // 线程空闲时间
new ArrayBlockingQueue<>(100), // 任务队列
Executors.defaultThreadFactory(), // 线程工厂
new ThreadPoolExecutor.AbortPolicy() // 拒绝策略
);
```
上述代码中,我们创建了一个ThreadPoolExecutor对象,并设置了以下参数:
- 核心线程数和最大线程数都为20,表示该线程池可以容纳最多20个线程。
- 线程空闲时间为0毫秒,表示线程空闲后立即被回收。
- 任务队列为ArrayBlockingQueue,最大长度为100,表示当有超过20个任务时,多余的任务会被放入队列中等待执行。
- 线程工厂使用默认的线程工厂。
- 拒绝策略为ThreadPoolExecutor.AbortPolicy,表示当队列已满并且线程池中的线程数已经达到最大值时,新任务会被拒绝。
使用上述代码创建的线程池,当有100个任务同时提交时,可以保证这些任务都能被执行,多余的任务会被加入到队列中等待执行。