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

相关文章
|
2天前
|
Java
【JAVA进阶篇教学】第四篇:JDK8中函数式接口
【JAVA进阶篇教学】第四篇:JDK8中函数式接口
|
2天前
|
Java API
【JAVA进阶篇教学】第三篇:JDK8中Stream API使用
【JAVA进阶篇教学】第三篇:JDK8中Stream API使用
|
2天前
|
Java
【JAVA进阶篇教学】第二篇:JDK8中Lambda表达式
【JAVA进阶篇教学】第二篇:JDK8中Lambda表达式
|
2天前
|
Java API
【JAVA进阶篇教学】第一篇:JDK8介绍
【JAVA进阶篇教学】第一篇:JDK8介绍
|
3天前
|
Java
JDK环境下利用记事本对java文件进行运行编译
JDK环境下利用记事本对java文件进行运行编译
9 0
|
4天前
|
Java 开发工具
2023全网最详细的银河麒麟操作系统,Java运行环境【jdk】安装
2023全网最详细的银河麒麟操作系统,Java运行环境【jdk】安装
|
4天前
|
Java 编译器 对象存储
java一分钟之Java入门:认识JDK与JVM
【5月更文挑战第7天】本文介绍了Java编程的基础——JDK和JVM。JDK是包含编译器、运行时环境、类库等的开发工具包,而JVM是Java平台的核心,负责执行字节码并实现跨平台运行。常见问题包括版本不匹配、环境变量配置错误、内存溢出和线程死锁。解决办法包括选择合适JDK版本、正确配置环境变量、调整JVM内存参数和避免线程死锁。通过代码示例展示了JVM内存管理和基本Java程序结构,帮助初学者更好地理解JDK和JVM在Java编程中的作用。
18 0
|
8天前
|
Oracle Java 关系型数据库
windows 下 win11 JDK17安装与环境变量的配置(配置简单详细,包含IJ中java文件如何使用命令运行)
本文介绍了Windows 11中安装JDK 17的步骤,包括从官方网站下载JDK、配置环境变量以及验证安装是否成功。首先,下载JDK 17的安装文件,如果没有Oracle账户,可以直接解压缩文件到指定目录。接着,配置系统环境变量,新建`JAVA_HOME`变量指向JDK安装路径,并在`Path`变量中添加。然后,通过命令行(cmd)验证安装,分别输入`java -version`和`javac -version`检查版本信息。最后,作者分享了如何在任意位置运行Java代码,包括在IntelliJ IDEA(IJ)中创建的Java文件,只需去掉包声明,就可以通过命令行直接运行。
|
11天前
|
Java 关系型数据库 测试技术
Java代码一键生成数据库文档(案例详解)
Screw是一个自动化数据库文档生成工具,能根据数据库表结构快速生成简洁、多格式(HTML、Word、Markdown)的文档,支持MySQL、MariaDB等多数据库。它使用Freemarker模板,允许用户自定义样式。依赖包括HikariCP数据库连接池和对应JDBC驱动。通过在Java代码或Maven插件中配置,可方便生成文档。示例代码展示了如何在测试用例中使用Screw。文档效果依赖于数据库中的表和字段注释。
|
12天前
|
存储 Java 索引
【亮剑】Java中的并发容器ConcurrentHashMap,它在JDK1.5中引入,用于替换HashTable和SynchronizedMap
【4月更文挑战第30天】本文介绍了Java中的并发容器ConcurrentHashMap,它在JDK1.5中引入,用于替换HashTable和SynchronizedMap。文章展示了创建、添加、获取、删除和遍历元素的基本用法。ConcurrentHashMap的内部实现基于分段锁,每个段是一个独立的Hash表,通过分段锁实现并发控制。每个段内部采用数组+链表/红黑树的数据结构,当冲突过多时转为红黑树优化查询。此外,它有扩容机制,当元素超过阈值时,会逐段扩容并翻倍Segment数量,以保持高性能的并发访问。