//四个拒绝策略
//new ThreadPoolExecutor.AbortPolicy(); //银行满了 还有人进来 不再处理,抛出异常
//new ThreadPoolExecutor.CallerRunsPolicy(); //银行满了 还有人进来 哪来的去哪里
//new ThreadPoolExecutor.DiscardPolicy(); //银行满了 还有人进来 不再处理,不会抛出异常
//new ThreadPoolExecutor.DiscardOldestPolicy(); //银行满了 尝试和最早的竞争,也不会抛出异常
public class Demo02 {// 最大线程到底该如何定义//CPU密集型,几核我们就定义为几个数,保持CPU效率最高//IO密集型,判断你程序组十分耗IO的线程,大于这个数就OK,比如15个大型任务,IO十分占用资源就用30个数public static void main(String[] args) {//获取CPU核数System.out.println(Runtime.getRuntime().availableProcessors());ExecutorService threadPool = new ThreadPoolExecutor(2, //核心线程2Runtime.getRuntime().availableProcessors(),   //最大线程Runtime.getRuntime().availableProcessors()获取CPU核数,或者填数字53, TimeUnit.SECONDS,         //超过等待3秒释放线程回到核心2个数new LinkedBlockingDeque<>(3),//等待区Executors.defaultThreadFactory(), //默认线程工厂,一般不会改new ThreadPoolExecutor.DiscardOldestPolicy()); //银行满了 尝试和最早的竞争,也不会抛出异常try {for (int i = 1; i <= 9; i++) {//使用线程池创建线程threadPool.execute(()->{System.out.println(Thread.currentThread().getName()+" OK");});}} catch (Exception e) {e.printStackTrace();} finally {//线程池用完需关闭threadPool.shutdown();}}
}

2021-06-14 七大参数,四种拒绝策略相关推荐

  1. 线程池三大方法,七大参数,四种拒绝策略

    线程和进程: 进程: 一个程序,是执行程序的一次执行过程. 一个进程往往包含若干个线程,线程是cpu调度和执行的单位. Java默认有2个线程:main.GC 池化技术: 01:程序的运行,本质 :占 ...

  2. 线程池的四种拒绝策略

    一.前言 线程池,相信很多人都有用过,没用过相信的也有学习过.但是,线程池的拒绝策略,相信知道的人会少许多. 二.四种线程池拒绝策略 当线程池的任务缓存队列已满并且线程池中的线程数目达到maximum ...

  3. 关于线程池的五种实现方式,七大参数,四种拒绝策略

    一.池化技术之线程池 实现线程池视频讲解,附源码:「链接」 什么是池化技术?简单来说就是优化资源的使用,我准备好了一些资源,有人要用就到我这里拿,用完了就还给我.而一个比较重要的的实现就是线程池.那么 ...

  4. Java多线程学习七:线程池的 4 种拒绝策略和 6 种常见的线程池

    以便在必要的时候按照我们的策略来拒绝任务,那么拒绝任务的时机是什么呢?线程池会在以下两种情况下会拒绝新提交的任务. 第一种情况是当我们调用 shutdown 等方法关闭线程池后,即便此时可能线程池内部 ...

  5. 线程池:4个方法,7个参数,4种拒绝策略

    什么是池? 先讲一个例子,有可能可以帮助你理解,觉得无趣的小伙伴可以直接跳过.相信大多数都知道外包公司,甚至很多小伙伴还在外包公司呆过,其实外包公司我觉得也就可以看作是个"池". ...

  6. ios页面间传递参数四种方式

    ios页面间传递参数四种方式 1.使用SharedApplication,定义一个变量来传递. 2.使用文件,或者NSUserdefault来传递 3.通过一个单例的class来传递 4.通过Dele ...

  7. 击穿线程池面试题:3大方法,7大参数,4种拒绝策略

    前言:多线程知识是Java面试中必考的点.本文详细介绍--线程池.在实际开发过程里,很多IT从业者使用率不高,也只是了解个理论知识,和背诵各种八股文,没有深入理解到脑海里,导致面试完就忘.--码农 = ...

  8. ThreadPoolExecutor 八种拒绝策略,对的,不是4种

    转载自  ThreadPoolExecutor 八种拒绝策略,对的,不是4种 前言 谈到 Java 的线程池最熟悉的莫过于 ExecutorService 接口了,jdk1.5 新增的 java.ut ...

  9. 第十七节: EF的CodeFirst模式的四种初始化策略和通过Migration进行数据的迁移

    一. 四种初始化策略 EF的CodeFirst模式下数据库的初始化有四种策略: 1. CreateDatabaseIfNotExists:EF的默认策略,数据库不存在,生成数据库:一旦model发生变 ...

  10. Kubernetes_部署_k8s的四种部署策略(滚动更新、重新创建、金丝雀部署、蓝绿部署)

    文章目录 一.前言 二.滚动更新 2.1 滚动更新 2.2 实践 2.2.1 新建两个springboot项目,生成两个镜像 2.2.2 kubectl apply启动 2.2.3 将版本修改为v2. ...

最新文章

  1. 数据蒋堂 | JOIN延伸 - 维度概念
  2. 跳车开发者Pokkst自述——从BTC到BCH
  3. maven package和install
  4. Qt Creator设置3D组件属性
  5. 实现call和apply
  6. 编程书单:十本Python编程语言的入门书籍
  7. 信息安全工程师笔记-云计算安全需求分析与安全保护工程
  8. plsql导出表结构_mysqldump命令详解 Part 5-按条件备份表数据
  9. 刷题笔记(1) 一个序列是否为二叉搜索树的遍历结果
  10. 《高效能程序员的修炼》——程序员的八种境界
  11. 怎么改变鼠标图案HTML,怎么换鼠标指针的颜色和图案?
  12. 软件项目管理中的需求管理要以用户为中心
  13. dis的前缀单词有哪些_前缀dis包含哪两种含义
  14. 微信小程序 小星星样式
  15. 软件项目开发中的百分之九十效应
  16. DMZ主机(路由器)
  17. java时钟代码_一个经典的JAVA APPLET时钟程序(一)
  18. Eclipse优化速度
  19. matlab - 3 自由度的机械臂
  20. 直接继承CompoundButton接收不到ACTION_UP的原因

热门文章

  1. Salesforce正面叫板微软Office:5.82亿美元收购Quip
  2. 微软再次强调:爱开发 爱 Linux!
  3. 持续集成(4)工具对比
  4. sublime text 插件记录
  5. MYSQL have_innodb DISABLED无法创建innodb类型的表
  6. SpringBoot 分布式session
  7. Django知识总结
  8. PS小技巧 | 不需要抠图的黑白配
  9. vb 字符串和数字相互转换函数
  10. 值得推荐的C/C++框架和库(转)