专注于 JetBrains IDEA 全家桶,永久激活,教程
持续更新 PyCharm,IDEA,WebStorm,PhpStorm,DataGrip,RubyMine,CLion,AppCode 永久激活教程

为什么不推荐通过Executors直接创建线程池

【强制】线程词不允许使用Executors去创建,而是通过ThreadPoolExecutor的方式,这样的处理方式让写的同学更加明确线程池的运行规则,规避资源耗尽的风险.

1、FixedThreadPoolSinleThreadPool:

允许的请求队列长度为Integer.MAX_VALUE,可能会堆积大量的请求,从而导致OOM.

2、CachedThreadPoolScheduledThreadPool:

允许创建的线程数量为Integer.MAX_VALUE,可能会创建大量的线程,从而导致OOM.

3、正确的线程创建方式

private ThreadFactory threadFactory = new ThreadFactoryBuilder().build();
ExecutorService executorService = new ThreadPoolExecutor(10, 30,
            0L, TimeUnit.SECONDS, new LinkedBlockingQueue<>(1024), threadFactory, 
            new ThreadPoolExecutor.AbortPolicy());

4、 当线程池的任务缓存队列已满并且线程池中的线程数目达到maximumPoolSize时,如果还有任务到来就会采取任务拒绝策略,通常有以下四种策略:

ThreadPoolExecutor.AbortPolicy:丢弃任务并抛出RejectedExecutionException异常

ThreadPoolExecutor.DiscardPolicy:丢弃任务,但是不抛出异常

ThreadPoolExecutor.DiscardOldestPolicy:丢弃队列最前面的任务,然后重新提交被拒绝的任务

ThreadPoolExecutor.CallerRunsPolicy:由调用线程(提交任务的线程)处理该任务

文章永久链接:https://tech.souyunku.com/25072

未经允许不得转载:搜云库技术团队 » 为什么不推荐通过Executors直接创建线程池

JetBrains 全家桶,激活、破解、教程

提供 JetBrains 全家桶激活码、注册码、破解补丁下载及详细激活教程,支持 IntelliJ IDEA、PyCharm、WebStorm 等工具的永久激活。无论是破解教程,还是最新激活码,均可免费获得,帮助开发者解决常见激活问题,确保轻松破解并快速使用 JetBrains 软件。获取免费的破解补丁和激活码,快速解决激活难题,全面覆盖 2024/2025 版本!

联系我们联系我们