2020美团技术年货CODEABETTERLIFE【后台篇】后台1Java线程池实现原理及其在美团业务中的实践1美团万亿级KV存储架构与实践32Java中9种常见的CMSGC问题分析与解决53美团配送A/B评估体系建设实践120新一代垃圾回收器ZGC的探索与实践134设计模式在外卖营销业务中的实践154美团命名服务的挑战与演进176美团MySQL数据库巡检系统的设计与应用197Kubernetes如何改变美团的云基础设施?206基本功|Java即时编译器原理解析及实践224MyBatis版本升级引发的线上告警回顾及原理分析257复杂环境下落地ServiceMesh的挑战与实践273C++服务编译耗时优化原理及实践287速度与压缩比如何兼得?压缩算法在构建部署中的优化310美团OCTO万亿级数据中心计算引擎技术解析328IntelPAUSE指令变化影响到MySQL的性能,该如何解决?337美团内部讲座|周烜:华东师范大学的数据库系统研究357目录Java线程池实现原理及其在美团业务中的实践作者:致远陆晨随着计算机行业的飞速发展,摩尔定律逐渐失效,多核CPU成为主流。使用多线程并行计算逐渐成为开发人员提升服务器性能的基本武器。J.U.C提供的线程池:ThreadPoolExecutor类,帮助开发人员管理线程并方便地执行并行任务。了解并合理使用线程池,是一个开发人员必修的基本功。本文开篇简述线程池概念和用途,接着结合线程池的源码,帮助读者领略线程池的设计思路,最后回归实践,通过案例讲述使用线程池遇到的问题,并给出了一种动态化线程池解决方案。一、写在前面1.1线程池是什么线程池(ThreadPool)是一种基于池化思想管理线程的工具,经常出现在多线程服务器中,如MySQL。线程过多会带来额外的开销,其中包括创建销毁线程的开销、调度线程的开销等等,同时也降低了计算机的整体性能。线程池维护多个线程,等待监督管理者分配可并发执行的任务。这种做法,一方面避免了处理任务时创建销毁线程开销的代价,另一方面避免了线程数量膨胀导致的过分调度问题,保证了对内核的充分利用。而本文描述线程池是JDK中提供的ThreadPoolExecutor类。后台2>美团2020技术年货当然,使用线程池可以带来一系列好处:●降低资源消耗:通过池化技术重复利用已创建的线程,降低线程创建和销毁造成的损耗。●提高响应速度:任务到达时,无需等待线程创建即可立即执行。●提高线程的可管理性:线程是稀缺资源,如果无限制创建,不仅会消耗系统资源,还会因为线程的不合理分布导致资源调度失衡,降低系统的稳定性。使用线程池可以进行统一的分配、调优...