前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >线程池的使用

线程池的使用

原创
作者头像
时光_赌徒
修改2021-09-28 18:20:31
6800
修改2021-09-28 18:20:31
举报
文章被收录于专栏:记录记录

//记录一下为什么阿里禁止使用一下方式创建线程池

代码语言:javascript
复制

ExecutorService executorService = Executors.newCachedThreadPool();

   public static ExecutorService newCachedThreadPool() {
        return new ThreadPoolExecutor(0, Integer.MAX_VALUE,
                                      60L, TimeUnit.SECONDS,
                                      new SynchronousQueue<Runnable>());
    }
     Integer.MAX_VALUE 容易OOM

//获取电脑线程数Runtime.getRuntime().availableProcessors()

代码语言:javascript
复制
/**
 * 如果是CPU密集型,CPU用的高,maximumPoolSize = CPU核数+1
 *
 */
//获取电脑线程数
System.out.println(Runtime.getRuntime().availableProcessors());
ExecutorService executorService = new ThreadPoolExecutor(
        2,//核心线程数
        5,//最大线程数
        2L,//等待时间
        TimeUnit.SECONDS,,//等待时间的单位
        new LinkedBlockingQueue<>(3),//等待的阻塞消息队列
        Executors.defaultThreadFactory(),//使用默认工厂创建
        /**
         * 拒绝策略
         * .AbortPolicy()默认的 ,拒绝执行策略
         * CallerRunsPolicy(),该策略不会抛弃任务,也不会爆出异常,将任务会退给调用者
         * DiscardPolicy(),多余丢失不报错
         * DiscardOldestPolicy 丢掉最老的
         */
       // new ThreadPoolExecutor.AbortPolicy());
       // new ThreadPoolExecutor.CallerRunsPolicy());
      //  new ThreadPoolExecutor.DiscardPolicy());
        new ThreadPoolExecutor.DiscardOldestPolicy());//拒绝策略

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档