[ 更换 ]
热门城市
北京上海广州深圳成都杭州南京武汉天津西安重庆青岛沈阳长沙大连厦门无锡福州济南宁波昆明苏州郑州长春合肥南昌哈尔滨常州烟台南宁温州石家庄太原珠海南通扬州贵阳东莞徐州大庆佛山威海洛阳淮安呼和浩特镇江潍坊桂林中山临沂咸阳包头嘉兴惠州泉州三亚赣州九江金华泰安榆林许昌新乡舟山慈溪南阳聊城海口东营淄博漳州保定沧州丹东宜兴绍兴唐山湖州揭阳江阴营口衡阳郴州鄂尔多斯泰州义乌汕头宜昌大同鞍山湘潭盐城马鞍山襄樊长治日照常熟安庆吉林乌鲁木齐兰州秦皇岛肇庆西宁介休滨州台州廊坊邢台株洲德阳绵阳双流平顶山龙岩银川芜湖晋江连云港张家港锦州岳阳长沙县济宁邯郸江门齐齐哈尔昆山柳州绍兴县运城齐河衢州太仓张家口湛江眉山常德盘锦枣庄资阳宜宾赤峰余姚清远蚌埠宁德德州宝鸡牡丹江阜阳莆田诸暨黄石吉安延安拉萨海宁通辽黄山长乐安阳增城桐乡上虞辽阳遵义韶关泸州南平滁州温岭南充景德镇抚顺乌海荆门阳江曲靖邵阳宿迁荆州焦作丹阳丽水延吉茂名梅州渭南葫芦岛娄底滕州上饶富阳内江三明淮南孝感溧阳乐山临汾攀枝花阳泉长葛汉中四平六盘水安顺新余晋城自贡三门峡本溪防城港铁岭随州广安广元天水遂宁萍乡西双版纳绥化鹤壁湘西松原阜新酒泉张家界黔西南保山昭通河池来宾玉溪梧州鹰潭钦州云浮佳木斯克拉玛依呼伦贝尔贺州通化朝阳百色毕节贵港丽江安康德宏朔州伊犁文山楚雄嘉峪关凉山雅安西藏四川广东河北山西辽宁黑龙江江苏浙江安徽福建江西山东河南湖北湖南海南贵州云南陕西甘肃青海台湾内蒙古广西宁夏香港澳门
培训资讯网 - 为兴趣爱好者提供专业的职业培训资讯知识

武汉课工场云计算培训:线程中介之Java线程池

武汉课工场云计算培训:线程中介之Java线程池

在云计算、5G技术快速发展的互联网世界,为了快速响应用户的请求,宏观上除了团队内部实行DevOps机制管理、使用微服务架构进行技术设计、使用Docker或K8s进行应用部署外,微观上在程序开发中使用并行计算的能力也是必不可少的。

而在Java开发中,最常用的便是通过线程池来最大程度利用CPU资源,实现多任务并行。

我们先来看一个用户请求快速响应的案例:北京在五一假期前的突然将应急响应程度从一级降为二级,从低风险地区入京不需要隔离,这消息一经放出,仿佛沉寂的北京和人们又活过来了。

大家纷纷开始在各平台购买机票、火车票,试想当你在去哪儿网查询从北京到日本的机票时,半天都刷不出来,又或是先有航班的班次、再有价格、继而有座位出来、最后出来整个图片(串行执行),蜗牛般的速度让你瞬间就离开该平台了。

为了快速的响应用户请求,在程序开发中一般采用多线程并发执行,即当用户发起查询航班请求时,将获取航班班次、价格信息、座位信息、图片信息这四个任务一起执行(并行执行),再返回给用户,将原来的时间缩减3/4。

在本案例中通过多线程并发执行的方式快速的响应了用户请求,接下来我们介绍线程池~

在介绍线程池原理之前,首先得了解什么是线程池。线程池,望文生义,就是线程的池子,里面有很多很多的线程。

我们知道一个程序运行时是一个进程,而程序里有很多的方法要去执行,每个方法就是一个线程,在刚刚的案例中去哪儿平台程序就是一个进程,里面获取航班班次的函数、获取航班价格的函数、获取航班位置的函数就是多个线程。

每个函数在运行时,都需要先把线程创建起来,然后运行,最后函数执行完毕销毁线程。如果每个函数运行时都去创建线程、运行完毕都去销毁线程,这实现太耗费线程资源,如果有一个地方专门负责线程的创建和销毁,程序的函数要运行时直接去申请,那么资源的消耗是不是就降低了很多(不需要创建和销毁)、函数的响应速度是不是就提高了很多呢?(每次来就使用了,不需要去创建)、线程的管理是不是就更专业了呢?(有专门的地方管理线程),是的,这个地方就是线程池,通过池化的思想统一管理分配线程。

接下来我们介绍在Java中线程池是如何实现的。Java中的线程池核心实现包括四个模块Executor、ExecutorService、AbstractExecutorService、ThreadPoolExecutor。

Executor是线程池对外的接口,研发人员只需将需要运行的函数(即任务)传递给Executor即可,Executor就会完成线程的调配和任务的执行部分。

ExecutorService是对Executor能力的扩展,研发人员是将任务一个个的传递给Executor,但是ExecutorService可将多个任务提炼成一个总任务,并且可管控线程池。

AbstractExecutorService是对上层的抽象,将执行任务的流程串联起来,使得最底层ThreadPoolExecutor只关注于任务的实现即可。ThreadPoolExecutor则是最复杂的底层,一方面要维护自身生命周期,一方面管理线程和任务。

那么ThreadPoolExecutor是如何管理线程和任务呢?

其中在它内部也维护着一个生产者消费者模型,在介绍消息中间件MQ的时候我们也详细地介绍过生产者消费者,它的优点之一是实现了解耦,即生产者往队列里发送任务,不必等待该任务执行完再发送下一个生产者,消费者只管从队列里获取任务进行线程分配,不必等到生产者发送任务。

在ThreadPoolExecutor中任务管理便是生产者,线程管理便是消费者,当任务提交后,线程池判断该任务得如何执行。

在线程池内部有五种状态,Running则表示该线程能接受新提交的任务并且也能处理阻塞队列中的任务。Shutdown则表示不能接受新提交的任务但可以继续处理阻塞队列中已保存的任务。Stop则表示不能接受新任务,也不能处理队列中的任务,会中断正在处理任务的线程。Tidying则表示所有的任务都终止了,有效线程数为0;Terminated则表示终结状态。其生命周期的转化如图所示。

当任务进来时,线程池首先会检查自己的状态,如果不是Running状态,那么直接拒绝任务的执行;如果线程是Running状态,而且线程数量<线程池正常大小数(即没有任务需要执行时线程池的大小,简称核心数corePoolSize),那么创建并启动一个线程来执行新提交的任务;如果线程数量>;核心数,并且线程池内的阻塞队列没有满,那么将该任务加入到阻塞队列等待执行;如果线程数量>;核心数并且<线程池最大数,并且线程池内的阻塞队列没有满,那么创建一个新的线程来执行提交的任务,如果线程数量>线程池最大线程数,并且线程池内的阻塞队列已满,那么拒绝处理该任务。

因此在线程池管理中,最大线程数、线程池正常大小数非常重要,如果过少可能导致线程不够用,任务不能执行,如果过多可能导致任务在缓存队列里等待时间长,最终超时不能执行。对于该数量的设置,目前也没有官方的算法,更多是通过监控数据和业务运行特征来不断地调整。

通过线程池统一管理线程能提高资源的使用率、提高用户响应时间。事实上,在程序世界里,除了运行函数的线程使用了池化管理的方式之外,当程序连接数据库时,也通过数据库连接池的方式统一管理数据库连接资源,当程序运行需要内存时,也通过内存池的方式统一管理内存资源。

这种统一化管理资源的方式,使得用户在低投入中获取了最高效率的资源利用,实现了共赢。

这就和链接、我爱我家、自如这样的大型房地产公司统一管理出租房源是一样的道理。以前租客要租房屋时,需要找到多个房东,咨询详细地理位置、价格、房屋图片,货比三家后再进行签约。而房屋中介将房屋收置后,租客要租房屋只需要提交自己的租房要求(地理位置&价格),中介就会对应的提供很多选择,并且推荐最合适的给你。通过统一化管理的方式提高了租客的租房效率,实现了共赢。

在互联网快速发展的今天,任何一家企业想要长久的站稳市场,除了提供的产品能满足用户不断变化的需求之外,产品的好用性能也是非常重要的,通过多线程开发的模式能很好的提高程序性能,本文只是抛砖引玉介绍了Java线程池的使用场景、实现原理、解决问题,但如何让其服务于良好的产品性能,就需要大家在实践中不断地摸索总结了~

添加VX13125006136进行云计算,JAVA,大数据学习在线咨询,获取更多免费学习资料

相关内容

【联线智慧法院】内蒙古自治区高级人民法院举办第十四期政法大数据平台与规范量刑智能辅助系统培训

为全面贯彻落实2023年全区政法工作重点任务,进一步提升全区法院应用政法大数据智能化应用平台的能力和水平,10月20日,自治区高院针对全区政法大数据平台及规范量刑智能辅助系统的使用开展全面系统的实操培训。自治区高院党组副书记、副院长王旭军,···

贵州省生态环境厅电子政务中心举办2023年全省生态环境网络安全培训班

10月12日至13日,贵州省生态环境厅电子政务中心举办了2023年全省生态环境网络安全培训班,厅直属各单位和各市(州)生态环境局信息技术负责人现场参训,各区(县)生态环境分局通过视频会议参训。本次培训班强调,贵州省生态环境厅电子政务中心作为···

提升网络建设水平 海南举办2023年电子政务网络安全专题培训

新海南客户端、南海网、南国都市报5月19日消息(记者 姚皓)5月19日,海南2023年电子政务网络安全专题培训在澄迈举行,活动旨在加快推进海南省网络安全建设,加强全省党政机关单位网络安全防护水平,为海南自贸港、数字政府建设创造安全、有序、稳···

格尔木市气象局举办2023年网络安全培训班

10月27日,格尔木市气象局举办网络安全知识培训班,进一步加强网络安全宣传教育,营造安全、健康、文明、和谐的网络环境。格尔木市气象局全体干部职工通过线上或线下方式参加了此次培训。培训围绕网络安全、数据安全等方面展开,解读了当前国内外网络安全···

2023年黑龙江省网络安全宣贯培训会在哈尔滨召开

为贯彻落实中央网信办、公安部相关工作要求,推动党委(党组)网络安全工作责任制和关键信息基础设施安全保护制度深入落实,7月18日,由省委网信办、省公安厅联合举办的2023年黑龙江省网络安全专题培训暨《关键信息基础设施安全保护要求》国家标准宣贯···

京湾区数学建模与人工智能培训在澳门举办

8月25至26日,国家人工智能推广暨京湾区数学建模与人工智能培训在澳门培正中学及康桥教育中心举行。图为部分出席者25日在澳门培正中学合影。 钟欣 摄中新网澳门8月26日电 国家人工智能推广暨京湾区数学建模与人工智能培训25日至26日在澳门培···

淘宝大学参与香港KOL培训 赋能香港青年就业创业

中新社香港3月16日电 (记者 史冰筠)香港青年电商促进会16日宣布,将同阿里巴巴旗下培训平台淘宝大学联合举办淘宝主播培训班,聘请淘宝大学专业的直播导师进行授课,希望赋能学员通过电商拓宽就业、创业渠道,带动香港电商发展。香港青年电商促进会在···

调查:近半香港企业开展新科技培训 涵盖大数据等

中新网6月25日电 据香港《文汇报》报道,香港的一项调查发现,46%受访企业于过去2年间,已开展和新科技有关的雇员培训,内容涵盖大数据、云端技术、物联网及人工智能等。香港人力资源管理学会公布香港培训调查报告。图片来源:香港《文汇报》/赵梦萦···

港媒:近半香港企业开展新科技培训 涵盖大数据等

据香港《文汇报》报道,香港的一项调查发现,46%受访企业于过去2年间,已开展和新科技有关的雇员培训,内容涵盖大数据、云端技术、物联网及人工智能等。香港人力资源管理学会公布香港培训调查报告。图片来源:香港《文汇报》/赵梦萦 摄香港人力资源管理···

自治区司法厅举办全区司法行政系统网络安全和信息化建设工作能力提升培训班

为深入学习贯彻党的二十大精神和习近平新时代中国特色社会主义思想,贯彻落实习近平总书记对网络安全和信息化工作的重要指示和全国网络安全和信息化工作会议精神,推动全区司法行政系统网络安全和信息化建设工作高质量发展,9月19日—20日自治区司法厅组···

2021年甘肃省网络安全管理员培训班在兰开班

中国甘肃网12月27日讯(本网记者 李红军 任磊)今天上午,由甘肃省委网信办主办、兰州大学国家大学科技园承办的2021年甘肃省网络安全管理员培训班在兰州开班。省委网信办副主任刘宗礼出席开班仪式并作动员讲话,兰州大学网信办主任、信息科学与工程···

数据库使用方法系列培训活动之二|台湾月旦知识库线上讲座

会议主题:西北政法大学【月旦知识库】教育训练会议时间:2022/01/18 15:30-17:30 (GMT+08:00) 中国标准时间 - 北京点击链接入会,或添加至会议列表:https://meeting.tencent.com/dm/···

2023年1 X大数据平台运维证书省级师资培训在河南开放大学举办

7月13日上午,2023年1+X“大数据平台运维证书”省级师资培训在河南开放大学(郑州信息科技职业学院)开班,此次培训由河南省教育厅主办,郑州信息科技职业学院承办。河南开放大学(郑州信息科技职业学院)副校长李小明、培训学院院长张颖、信息工程···

【国家网络安全宣传周】福安市开展网络安全培训

为进一步提升网络安全管理工作水平,增强广大干部网络安全风险防范能力,9月12日下午,福安市开展网络安全培训,福安市各乡镇(街道)、市直单位网络安全业务人员90余人参加培训。本次培训邀请了奇安信福建分区网络安全技术人员郑泽辉进行授课。现场培训···

花溪区开展教育系统网络安全培训

7月4日,由花溪区委网信办指导,区教育局主办的花溪教育系统数据安全培训在溪南高中举行,全区公民办中小学、幼儿园、中职学校相关人员300余人参训。培训邀请网络工程师对数据安全文件进行解读,并通过真实案例介绍了数据安全的问题及处置方法以及数据安···

2023年广西招商引资大数据平台(二期)专题培训会在邕召开

8月24日,2023年广西招商引资大数据平台(二期)专题培训会在南宁召开。培训会邀请大数据招商专家对平台新增功能及使用操作进行讲解,并介绍近年招商工作趋势和产业发展特点,分享大数据招商工作经验和典型案例。全区各市、县区、园区招商业务骨干和自···

云南粉笔:依托大数据智能分析打造公考培训新标准

2023年9月2日,云南粉笔在昆明举行了盛大的省考产品发布会,吸引了来自全国各地的教育专家、媒体代表以及公考学子齐聚一堂。本次发布会上,粉笔推出最新研发的省考培训产品,将线上与线下课堂相结合,依托大数据智能分析,打造公考培训新标准。 云南粉···

2023年度室内设计1 X证书师资及考评员培训(黑龙江站)成功举办

2023年8月21日-25日,为提升试点院校“室内设计职业技能等级证书”教育培训质量,积极推动2023年度证书试点工作顺利开展,由中国室内装饰协会主办、哈尔滨职业技术学院承办、黑龙江省室内装饰协会协办的“2023年度全国室内设计职业技能等级···

昆明经开区开展2023年春漫社区老年人智能手机使用暨网络安全培训活动

来源:【昆明日报-掌上春城】掌上春城讯 “五社联动送服务,点亮民生微幸福”。8月17日,昆明经济技术开发区青年志愿者协会党支部在春漫社区组织开展“融入智能e时代 健康银龄新生活”老年人智能手机使用暨网络安全培训活动。本次培训活动围绕老年人日···

2023年全省“十四五”全民健康信息化与网络安全培训班举办

5月11日—12日,2023年全省“十四五”全民健康信息化与网络安全培训班在张家口市举办。省卫生健康委二级巡视员范素文出席会议并讲话。培训班总结了2022年网络安全和信息化工作,安排了2023年重点工作。培训班邀请国家和省内有关专家对卫生健···