欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPTX文档下载  

    线程池分享PPT模板课件.pptx

    • 资源ID:1591565       资源大小:1.01MB        全文页数:32页
    • 资源格式: PPTX        下载积分:16金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要16金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    线程池分享PPT模板课件.pptx

    线程池,演讲人,202x-11-11,目录,01.,介绍,07.,workqueue(阻塞队列),03.,threadpoolexecutor,05.,拒绝策略,02.,编码实现,04.,threadpoolexecutor扩展,06.,自定义线程池和拒绝策略,08.,jvm的参数类型,介绍,01,介绍,01,线程池做的工作主要是控制运行的线程的数量,处理过程中将任务放入队列,然后在线程创建后启动这些任务,如果线程数量超过了最大数量超出的线程排队等候,等其他线程执行完毕,再从队列中取出任务来执行。,是什么,02,他的主要特点为:线程复用;控制最大并发量;管理线程;,特点,03,分支主题,架构说明,编码实现,02,executors.newfixedthreadpool(int); 一池固定处理线程 底层实现 分支主题 newfixedthreadpool():该方法将返回一个固定线程数量的线程池,该线程池的数量将始终不变(核心线程数与最大线程数相等)。当一个线的任务提交时,线程池中若有空闲的线程,则立即执行,否则将会将任务添加到任务队列中,等到线程空闲时,再处理任务队列中的任务,但是由于它采用的阻塞队列是 linkedblockingqueue,是一个最大值很大(integer.max_value)的队列,也可以认为是无界队列,当线程池中的任务处理不及时的时候,而一边又疯狂的提交任务,将会导致oom发生。 适合执行长期的任务,性能好很多 底层实现 分支主题 newFixedThreadPool():该方法将返回一个固定线程数量的线程池,该线程池的数量将始终不变(核心线程数与最大线程数相等)。当一个线的任务提交时,线程池中若有空闲的线程,则立即执行,否则将会将任务添加到任务队列中,等到线程空闲时,再处理任务队列中的任务,但是由于它采用的阻塞队列是 LinkedBlockingQueue,是一个最大值很大(Integer.MAX_VALUE)的队列,也可以认为是无界队列,当线程池中的任务处理不及时的时候,而一边又疯狂的提交任务,将会导致OOM发生。 适合执行长期的任务,性能好很多,编码实现 executors.newsinglethreadexecutor(); 一池一个处理线程 底层实现 newsinglethreadexecutor:可见这个方法,只会创建一个线程的线程池。多余的任务还是会被添加到 linkedblockingqueue中,也会有oom情况的发生。 适合一个任务一个任务得场景 Executors.newSingleThreadExecutor(); 一池一个处理线程 底层实现 newSingleThreadExecutor:可见这个方法,只会创建一个线程的线程池。多余的任务还是会被添加到 LinkedBlockingQueue中,也会有OOM情况的发生。 适合一个任务一个任务得场景,编码实现 executors.newcachedthreadpool(); 一池n个处理线程 底层 newcachedthreadpool:该方法将返回一个可根据实际情况调整的线程数量的线程池,线程池的数量不固定,我们可以看见上面的方法中设置的是corepoolsize为0,maximumpoolsize为整数最大值,保活时间为60秒,阻塞队列为synchronousqueue,故线程池中有空闲线程可以复用的话,则会优先复用空闲线程,如果所有的线程都在工作的话,新的任务提交,直接会创建新的线程处理任务,所有线程处理完任务后,将会返回线程池进行复用。如果同时又大量任务提交,那么将会开启等量的线程,这样也会导致oom。 适合执行很多短期异步的小程序,或者负载较轻的服务器 Executors.newCachedThreadPool(); 一池N个处理线程 底层 newCachedThreadPool:该方法将返回一个可根据实际情况调整的线程数量的线程池,线程池的数量不固定,我们可以看见上面的方法中设置的是corePoolSize为0,maximumPoolSize为整数最大值,保活时间为60秒,阻塞队列为SynchronousQueue,故线程池中有空闲线程可以复用的话,则会优先复用空闲线程,如果所有的线程都在工作的话,新的任务提交,直接会创建新的线程处理任务,所有线程处理完任务后,将会返回线程池进行复用。如果同时又大量任务提交,那么将会开启等量的线程,这样也会导致OOM。 适合执行很多短期异步的小程序,或者负载较轻的服务器,编码实现,executors.newscheduledthreadpool(int);,编码实现,executors.newworkstealingpool();,threadpoolexecutor,03,threadpoolexecutor,七大参数,01,02,03,04,int corepoolsize : 指定了线程池中的常驻的核心线程数量,long keepalivetime : 当线程池线程超过corepoolsize时,多余的空闲线程的存活时间。即,超过了corepoolsize的空间时间,在多长时间被销毁,05,blockingqueue workqueue : 任务队列,被提交但尚未被执行的任务,int maximumpoolsize : 线程池中最大线程数量,timeunit unit : keepalivetime的单位,rejectedexecutionhandler handler : 拒绝策略,当任务太多,来不及处理,如何执行拒绝任务,06,七大参数,threadfactory threadfactory : 线程工厂,用于创建线程,可以利用guava线程工厂,默认也可,threadpoolexecutor,工作原理,原理 分支主题流程 分支主题提交任务后的执行过程 1、判断核心线程池是否已满,如果不是,则创建线程执行任务2、如果核心线程池满了,判断队列是否满了,如果队列没满,将任务放在队列中3、如果队列满了,则判断最大线程池是否已满,如果没满,创建线程执行任务4、如果线程池也满了,则按照拒绝策略对任务进行处理,threadpoolexecutor扩展,04,threadpoolexecutor扩展,beforeexecute:线程池中任务运行前执行afterexecute:线程池中任务运行完毕后执行terminated:线程池退出后执行afterExecute:线程池中任务运行完毕后执行terminated:线程池退出后执行,拒绝策略,05,拒绝策略,01,02,03,04,abortpolicy (默认): 该策略会直接抛出异常,阻止系统正常工作,discardoldestpolicy : 丢弃最开始的(即将被执行的)任务,并尝试再次提交任务。,callerrunspolicy : 只要线程未关闭,该策略直接调用者线程中执行将被丢弃的任务,这样的话不会真正抛弃任务,但会影响提交线程的性能。(会退给调用者),discardpolicy : 该策略将直接丢弃无法处理的任务,不予任何处理,05,自定义拒绝策略:继承rejectedexecutionhandler接口,重写rejectedexecution方法,自定义线程池和拒绝策略,06,自定义线程池和拒绝策略,实际生产中不用executore初始化线程池,因为底层使用的阻塞队列是无界队列,容易造成oom,cpu密集型io密集型 io密集型的任务不是一直在执行任务,所以尽可能的配多一点cpu核数*2io密集型任务每个线程都会大量的阻塞计算公式:cpu核数/(1-阻塞系数) 阻塞系数 = 0.8 0.9之间IO密集型 IO密集型的任务不是一直在执行任务,所以尽可能的配多一点CPU核数*2IO密集型任务每个线程都会大量的阻塞计算公式:CPU核数/(1-阻塞系数) 阻塞系数 = 0.8 0.9之间,如何合理配置线程,workqueue(阻塞队列),07,workqueue(阻塞队列),是什么分类 arrayblockingqueuelinkedblockingqueuesynchronousqueue分类 ArrayBlockingQueueLinkedBlockingQueueSynchronousQueue,jvm的参数类型,08,jvm的参数类型,标配参数,x 参数(了解),xx 参数,jinfo -flag,参看默认参数,基本参数,jvm的参数类型,标配参数,-version,01,-help,02,jvm的参数类型,x 参数(了解),-xint:解释执行,-xcomp:第一次使用就编译成本地代码,-xmixed:混合模式,jvm的参数类型,xx 参数,boolean 类型:-xx:+ 或者 - 某个属性值(+ 表示开启,- 表示关闭),kv 设置类型:-xx:key=value,b,c,a,查看jvm初始默认值:-xx:+printflagsinitial,查看修改更新:-xx:+printflagsfinal,打印命令行参数(可以看默认垃圾回收器):-xx:+printcommandlineflags,jvm的参数类型,参看默认参数,jvm的参数类型,基本参数,-xmx,02,-xms,01,-xss,03,-xmn,04,-xx:metaspacesize,05,-xx:+printgcdetails,06,jvm的参数类型,基本参数,-xx:survivorratio,-xx:newratio,-xx:maxtenuringthreshold,感谢聆听,2020,

    注意事项

    本文(线程池分享PPT模板课件.pptx)为本站会员(牧羊曲112)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开