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程序员

相关文章
|
15天前
|
Java API Apache
Java编程如何读取Word文档里的Excel表格,并在保存文本内容时保留表格的样式?
【10月更文挑战第29天】Java编程如何读取Word文档里的Excel表格,并在保存文本内容时保留表格的样式?
71 5
|
2月前
|
Java Linux
java基础(3)安装好JDK后使用javac.exe编译java文件、java.exe运行编译好的类
本文介绍了如何在安装JDK后使用`javac.exe`编译Java文件,以及使用`java.exe`运行编译好的类文件。涵盖了JDK的安装、环境变量配置、编写Java程序、使用命令行编译和运行程序的步骤,并提供了解决中文乱码的方法。
60 2
|
1月前
|
缓存 Java Maven
java: 警告: 源发行版 11 需要目标发行版 11 无效的目标发行版: 11 jdk版本不符,项目jdk版本为其他版本
如何解决Java项目中因JDK版本不匹配导致的编译错误,包括修改`pom.xml`文件、调整项目结构、设置Maven和JDK版本,以及清理缓存和重启IDEA。
46 1
java: 警告: 源发行版 11 需要目标发行版 11 无效的目标发行版: 11 jdk版本不符,项目jdk版本为其他版本
|
23天前
|
设计模式 Java API
[Java]静态代理与动态代理(基于JDK1.8)
本文介绍了代理模式及其分类,包括静态代理和动态代理。静态代理分为面向接口和面向继承两种形式,分别通过手动创建代理类实现;动态代理则利用反射技术,在运行时动态创建代理对象,分为JDK动态代理和Cglib动态代理。文中通过具体代码示例详细讲解了各种代理模式的实现方式和应用场景。
20 0
[Java]静态代理与动态代理(基于JDK1.8)
|
1月前
|
Java Linux
java读取linux服务器下某文档的内容
java读取linux服务器下某文档的内容
36 3
java读取linux服务器下某文档的内容
|
1月前
|
Java
Java基础之 JDK8 HashMap 源码分析(中间写出与JDK7的区别)
这篇文章详细分析了Java中HashMap的源码,包括JDK8与JDK7的区别、构造函数、put和get方法的实现,以及位运算法的应用,并讨论了JDK8中的优化,如链表转红黑树的阈值和扩容机制。
23 1
|
2月前
|
容器
jdk8新特性-详情查看文档
jdk8新特性-详情查看文档
45 3
|
2月前
|
Oracle Java 关系型数据库
Linux下JDK环境的配置及 bash: /usr/local/java/bin/java: cannot execute binary file: exec format error问题的解决
如果遇到"exec format error"问题,文章建议先检查Linux操作系统是32位还是64位,并确保安装了与系统匹配的JDK版本。如果系统是64位的,但出现了错误,可能是因为下载了错误的JDK版本。文章提供了一个链接,指向Oracle官网上的JDK 17 Linux版本下载页面,并附有截图说明。
Linux下JDK环境的配置及 bash: /usr/local/java/bin/java: cannot execute binary file: exec format error问题的解决
|
2月前
|
Java API 开发者
【Java模块化新飞跃】JDK 22模块化增强:构建更灵活、更可维护的应用架构!
【9月更文挑战第9天】JDK 22的模块化增强为开发者构建更灵活、更可维护的应用架构提供了强有力的支持。通过模块化设计、精细的依赖管理和丰富的工具支持,开发者可以更加高效地开发和管理应用,提高应用的性能和可维护性。
86 10
|
2月前
|
监控 IDE Java
【Java性能调优新工具】JDK 22性能分析器:深度剖析,优化无死角!
【9月更文挑战第9天】JDK 22中的性能分析器为Java应用的性能调优提供了强大的支持。通过深度集成、全面监控、精细化分析和灵活报告生成等核心优势,性能分析器帮助开发者实现了对应用性能的全面掌控和深度优化。在未来的Java开发过程中,我们期待性能分析器能够继续发挥重要作用,为Java应用的性能提升贡献更多力量。