8核32G的配置怎么设置线程池比较合理ExecutorService newCacheThreadPool = new ThreadPoolExecutor( 10, 100, 3, TimeUnit.SECONDS, new LinkedBlockingDeque<>(1000), Executors.defaultThreadFactory(), new ThreadPoolExecutor.DiscardOldestPolicy() );
时间: 2024-02-10 14:11:43 浏览: 28
针对8核32G的配置,推荐的线程池参数如下:
1. corePoolSize:根据CPU核数设置,一般设置为CPU核数的2倍,即16。
2. maximumPoolSize:根据实际情况设置,一般不超过CPU核数的4倍,即32。
3. keepAliveTime:根据实际情况设置,一般不宜过长,例如10秒。
4. unit:时间单位,一般设置为TimeUnit.SECONDS。
5. workQueue:阻塞队列,可以根据实际情况选择适合的队列类型,例如LinkedBlockingDeque。
6. threadFactory:线程工厂,可以使用默认的线程工厂,即Executors.defaultThreadFactory()。
7. handler:拒绝策略,当线程池和队列都满了之后,可以采用DiscardOldestPolicy策略,丢弃最老的任务。
根据上述参数,可以创建如下的线程池:
```
ExecutorService threadPool = new ThreadPoolExecutor(
16,
32,
10,
TimeUnit.SECONDS,
new LinkedBlockingDeque<>(1000),
Executors.defaultThreadFactory(),
new ThreadPoolExecutor.DiscardOldestPolicy()
);
```
需要注意的是,以上参数仅供参考,具体的参数设置需要根据实际情况进行调整。