java8的JDK文档--Tutorial - Concurrency Lesson-Thread Pools

简介: java8的JDK文档--Tutorial - Concurrency Lesson-Thread Pools

java8的JDK文档--Tutorial - Concurrency Lesson-Thread Pools



本次主要介绍的文档对线程池的内容,译文如下:

线程池

java.util.concurrent 中的大多数执行器实现都使用线程池,这些线程池由工作线程组成。这种线程与它执行的 Runnable 和 Callable 任务分开存在,通常用于执行多个任务。

使用工作线程可最大程度地减少线程创建产生的开销。线程对象使用大量内存,在大型应用程序中,分配和解分配许多线程对象会产生大量的内存管理开销。

一种常见的线程池类型是固定线程池( fixed thread pool)。这种类型的池始终运行指定数量的线程;如果线程在仍在使用时以某种方式终止,则会自动将其替换为新线程。任务通过内部队列提交到池中,只要活动任务多于线程,该队列就会保留额外的任务。

固定线程池的一个重要优点是使用它的应用程序会正常降级。要理解这一点,请考虑一个 Web 服务器应用程序,其中每个 HTTP 请求都由单独的线程处理。如果应用程序只是为每个新的 HTTP 请求创建一个新线程,并且系统收到的请求数超过了它立即处理的请求数,则当所有这些线程的开销超过系统的容量时,应用程序将突然停止响应所有请求。由于对可以创建的线程数有限制,应用程序不会像 HTTP 请求进入时那样快地为它们提供服务,但它会以系统可以承受的速度为它们提供服务。

创建使用固定线程池的执行程序的一种简单方法是在 java.util.concurrent.Executors 中调用 newFixedThreadPool 工厂方法。 此类还提供以下工厂方法:

  • newCachedThreadPool 方法创建具有可扩展线程池的执行程序。此执行器适用于启动许多短期任务的应用程序。
  • newSingleThreadExecutor 方法创建一个一次执行单个任务的执行器。
  • 几个工厂方法是上述执行程序的 ScheduledExecutorService 版本。

如果上述工厂方法提供的执行程序都不能满足您的需求,则构造 java.util.concurrent.ThreadPoolExecutor 或 java.util.concurrent.ScheduledThreadPoolExecutor 的实例将为您提供其他选项。


我的翻译水平有限,提供下面的原文给给位参考:

image.png



                                                                                           -----一位在编码路上的40程序员

相关文章
|
9月前
|
安全 Oracle Java
JAVA高级开发必备·卓伊凡详细JDK、JRE、JVM与Java生态深度解析-形象比喻系统理解-优雅草卓伊凡
JAVA高级开发必备·卓伊凡详细JDK、JRE、JVM与Java生态深度解析-形象比喻系统理解-优雅草卓伊凡
666 0
JAVA高级开发必备·卓伊凡详细JDK、JRE、JVM与Java生态深度解析-形象比喻系统理解-优雅草卓伊凡
|
Java API Apache
Java编程如何读取Word文档里的Excel表格,并在保存文本内容时保留表格的样式?
【10月更文挑战第29天】Java编程如何读取Word文档里的Excel表格,并在保存文本内容时保留表格的样式?
1190 5
|
10月前
|
安全 Java 微服务
Java 最新技术和框架实操:涵盖 JDK 21 新特性与 Spring Security 6.x 安全框架搭建
本文系统整理了Java最新技术与主流框架实操内容,涵盖Java 17+新特性(如模式匹配、文本块、记录类)、Spring Boot 3微服务开发、响应式编程(WebFlux)、容器化部署(Docker+K8s)、测试与CI/CD实践,附完整代码示例和学习资源推荐,助你构建现代Java全栈开发能力。
959 1
|
11月前
|
安全 Java API
Java最新技术(JDK 11+) 及以上 Java 最新技术之集合框架实操应用详解
本示例基于Java最新技术(JDK 11+),涵盖集合框架的核心功能,结合Java 8+特性(如Stream API、Lambda表达式)与并发编程最佳实践。内容包括:List操作(初始化、Lambda过滤、Stream处理)、Map操作(流式过滤、ConcurrentHashMap原子操作、并行流)、Set操作(TreeSet排序、CopyOnWriteArraySet并发安全)、Queue/Deque操作(优先队列、双端队列)以及高级聚合操作(集合转换、分组统计、平均值计算)。 [代码下载](https://pan.quark.cn/s/14fcf913bae6)
218 4
|
10月前
|
Oracle Java 关系型数据库
新手必看:Java 开发环境搭建之 JDK 与 Maven
本文分享了 Java 学习中 JDK 安装配置与 Maven 使用的入门知识,涵盖 JDK 下载安装、环境变量设置、Maven 安装配置及本地仓库与镜像设置,帮助新手快速搭建 Java 开发环境。
1343 0
|
前端开发 Cloud Native Java
Java||Springboot读取本地目录的文件和文件结构,读取服务器文档目录数据供前端渲染的API实现
博客不应该只有代码和解决方案,重点应该在于给出解决方案的同时分享思维模式,只有思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
Java||Springboot读取本地目录的文件和文件结构,读取服务器文档目录数据供前端渲染的API实现
|
算法 Java 编译器
深入理解 Java JDK —— 让我们从基础到进阶
JDK(Java Development Kit)是 Java 开发的核心工具包,包含编译、运行和调试 Java 程序所需的所有工具和库。它主要由 JVM(Java 虚拟机)、JRE(Java 运行时环境)和 Java 核心类库组成。JVM 是跨平台运行的基础,负责字节码的加载、执行和内存管理;JRE 提供运行 Java 应用的环境;核心类库则提供了丰富的 API 支持。通过编写、编译和运行一个简单的 Java 程序,可以深入理解 JDK 的工作原理。此外,JDK 还提供了 JIT 编译、垃圾回收优化和并发工具包等高级功能,帮助开发者提高程序性能和稳定性。
1708 10
|
JavaScript Java 测试技术
基于Java+SpringBoot+Vue实现的车辆充电桩系统设计与实现(系统源码+文档+部署讲解等)
面向大学生毕业选题、开题、任务书、程序设计开发、论文辅导提供一站式服务。主要服务:程序设计开发、代码修改、成品部署、支持定制、论文辅导,助力毕设!
|
Java API 数据安全/隐私保护
探索Java动态代理的奥秘:JDK vs CGLIB
动态代理是一种在 运行时动态生成代理类的技术,无需手动编写代理类代码。它通过拦截目标方法的调用,实现对核心逻辑的 无侵入式增强(如日志、事务、权限控制等)。
486 0
探索Java动态代理的奥秘:JDK vs CGLIB