当前位置: 首页 > news >正文

清远东莞网站建设上海市安全建设监理协会网站

清远东莞网站建设,上海市安全建设监理协会网站,网站建设公司上海,设计官网大全在Java中线程池是一种池化技术#xff0c;用于管理和复用线程#xff0c;提高线程的利用率和性能。下面是一些常见的线程池的参数及其解释#xff1a; 一#xff1a;线程池的七大参数 public ThreadPoolExecutor(int corePoolSize,int maximumPoolSize,long keepAliveTim…在Java中线程池是一种池化技术用于管理和复用线程提高线程的利用率和性能。下面是一些常见的线程池的参数及其解释 一线程池的七大参数 public ThreadPoolExecutor(int corePoolSize,int maximumPoolSize,long keepAliveTime,TimeUnit unit,BlockingQueueRunnable workQueue,ThreadFactory threadFactory,RejectedExecutionHandler handler) 1. corePoolSize核心线程数线程池中保持活动状态的最小线程数即使是空闲状态也不会被回收。2. maximumPoolSize最大线程数线程池中允许存在的最大线程数包括核心线程数和非核心线程数此值必须大于1。3. keepAliveTime线程空闲时间多余空闲线程的存活时间。当前线程池数量超过corePoolSize时当空闲时间达到keepAliveTime时多余空闲线程会被销毁直到剩下corePoolSize为止。4. unit时间单位设置keepAliveTime的时间单位如秒、毫秒等。5. workQueue任务队列用于存放等待执行的任务的阻塞队列可以选择不同类型的队列如ArrayBlockingQueue、LinkedBlockingQueue等。6. threadFactory线程工厂用于创建线程的工厂类可以自定义线程的名称、优先级等属性。7. handler任务拒绝策略当队列满了并且工作线程大于等于线程池的最大线程数maximumPoolSize时对任务的拒绝方式。当线程池无法接收新任务时执行的策略如抛出异常、丢弃任务或者调用主线程来执行任务。 二底层工作原理 假如我们自定义的线程池核心线程数2个阻塞队列为3个最大线程数5个 我们用银行排队的列子来做参考当我们前来银行办理业务时来了第一个和第二个人银行会开启核心线程数为他们办理业务如果再有人前来来了第三个第四个、第五个我们都会先让他们等待即是将他们放在阻塞队列里面如果这个时候阻塞队列满了还有人前来办理业务银行就会开启新的窗口即是最大线程数的其他窗口3个窗口。如果此时连最大线程数也满那么就会执行我们的拒绝策略。 1为什么是先添加队列而不是先添加最大线程 在创建新的线程的时候是需要获取全局锁的这个时候其他线程就得阻塞影响了整体效率。 2线程池中阻塞对列有什么作用 阻塞队列自带阻塞和唤醒的功能不需要额外处理无任务执行时线程池利用阻塞队列的take方法挂起从而维持核心线程的存活不至于一直占用CPU资源 3注意 当阻塞队列已满依然有线程进来那么会开启新的线程来执行新进来的任务而不会优先执行阻塞队列中的任务。 4jdk中4种拒绝策略 AbortPolicy(默认)直接抛出RejectedExecutionException异常阻止系统正常进行 CallerRunsPolicy“调用者运行”一种调节机制该策略既不会抛弃任务也不会抛出异常而是将某些任务回退到调用者从而降低新任务的流量 DiscardPolicy改策略默默丢弃无法处理的任务不予任何受理也不抛出异常。如果允许任务丢弃这是最好的一种策略。 DiscardOldestPolicy抛弃队列中等待最久的任务然后将当前任务加入队列然后再次提交任务 通常而言这四种拒绝策略我们一般都不太适用我们的业务场景我们一般都会自定义自己的拒绝策略将线程任务放进kafaka或者mq消息队列中。 三自定义线程池 代码 public static void main(String[] args) {ThreadPoolExecutor threadPoolExecutor new ThreadPoolExecutor(2,5,2L,TimeUnit.SECONDS,new ArrayBlockingQueue(3),Executors.defaultThreadFactory(),new ThreadPoolExecutor.AbortPolicy());//10个顾客请求try {for (int i 0; i 10; i) {//执行threadPoolExecutor.execute(()-{System.out.println(Thread.currentThread().getName()办理业务);});}} catch (Exception e) {e.printStackTrace();}finally {threadPoolExecutor.shutdown();}} 运行结果 以上就是线程池相关参数的介绍啦希望对学习线程池的小伙伴有帮助~~
http://www.hkea.cn/news/14499312/

相关文章:

  • pc网站开发语言宝安网站设计制作
  • python 做网站 用哪个框架好十大装修公司排名哪家最好
  • 淄博 建设网站重庆一般做一个网站需要多少钱
  • 成品网站w灬源码伊园上海建设银行官网网站
  • 哔哩哔哩黄页网站江苏省建设考试信息管理系统网站
  • 余姚市城乡建设局网站建设一个网站的基本步骤
  • 桂林网站建设企业管理咨询收费标准
  • 吉林省建设厅网站特殊工种潍坊微信网站
  • 网站外链建设策略网站建设步和客户沟通
  • 网站制作案例网站开发的国内外现状
  • 浙江短视频seo优化网站云南网络营销文化优化
  • 网站开发浏览器举报网站制度建设方面
  • 做网站可以临摹吗深圳广告公司画册设计
  • 上饶市网站建设wordpress后台编辑小工具
  • 营销型网站建设策划书怎么写凡科建站官网登录
  • 学校如何重视校园网站建设企业管理软件开发软件公司
  • 散热器 东莞网站建设工程建设公司官网
  • 成都市建设工程质量协会网站眼科医院网站做竞价带来的询盘量
  • 网站地图制作怎么做?0基础wordpress
  • 网站扫二维码怎么做青海建设厅通报网站
  • 东莞知名网站网络项目工作室
  • 购物网站简介南京网页设计照片
  • 网站建设塞西网站建设需要在哪备案
  • 网站开发的学习住房和城乡建设厅安全员证
  • 重庆建网站多少钱jsp网站连接数据库
  • aspcms网站地图网站建设合同规定
  • 网站开发工具简介企业网站用个人备案
  • 做五金建材市场的网站wordpress英文别名
  • 做网站是用源码还是模版手机网站是怎么做的
  • 佛山网站设计实力乐云seo丹麦做网站公司有哪些