From 8e054e6c652fccaeb53ab3dfb40c8a264f244dae Mon Sep 17 00:00:00 2001 From: Guide Date: Thu, 28 Mar 2024 11:23:38 +0800 Subject: [PATCH] =?UTF-8?q?[docs=20update]=E6=A0=BC=E5=BC=8F=E4=BF=AE?= =?UTF-8?q?=E6=AD=A3&=E9=83=A8=E5=88=86=E8=A1=A8=E8=BF=B0=E5=AE=8C?= =?UTF-8?q?=E5=96=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../network/other-network-questions.md | 2 +- docs/database/mysql/mysql-index.md | 2 +- docs/database/redis/redis-questions-01.md | 16 ++--- docs/database/redis/redis-questions-02.md | 6 +- .../message-queue/spring-bean-lifestyle.png | Bin 0 -> 158530 bytes ...onship-between-thread-pool-parameters.png} | Bin .../java-concurrent-questions-03.md | 48 +++++++------- .../concurrent/java-thread-pool-summary.md | 62 +++++++++++------- 8 files changed, 75 insertions(+), 61 deletions(-) create mode 100644 docs/high-performance/images/message-queue/spring-bean-lifestyle.png rename docs/java/concurrent/images/java-thread-pool-summary/{线程池各个参数之间的关系.png => relationship-between-thread-pool-parameters.png} (100%) diff --git a/docs/cs-basics/network/other-network-questions.md b/docs/cs-basics/network/other-network-questions.md index caf61ac9..f9f91f45 100644 --- a/docs/cs-basics/network/other-network-questions.md +++ b/docs/cs-basics/network/other-network-questions.md @@ -182,7 +182,7 @@ HTTP 状态码用于描述 HTTP 请求的结果,比如 2xx 就代表请求被 ![HTTP/1.0 和 HTTP/1.1 对比](https://oss.javaguide.cn/github/javaguide/cs-basics/network/http1.0-vs-http1.1.png) -- **连接方式** : HTTP/1.0 为短连接,HTTP/1.1 支持长连接。 +- **连接方式** : HTTP/1.0 为短连接,HTTP/1.1 支持长连接。HTTP 协议的长连接和短连接,实质上是 TCP 协议的长连接和短连接。 - **状态响应码** : HTTP/1.1 中新加入了大量的状态码,光是错误响应状态码就新增了 24 种。比如说,`100 (Continue)`——在请求大资源前的预热请求,`206 (Partial Content)`——范围请求的标识码,`409 (Conflict)`——请求与当前资源的规定冲突,`410 (Gone)`——资源已被永久转移,而且没有任何已知的转发地址。 - **缓存机制** : 在 HTTP/1.0 中主要使用 Header 里的 If-Modified-Since,Expires 来做为缓存判断的标准,HTTP/1.1 则引入了更多的缓存控制策略例如 Entity tag,If-Unmodified-Since, If-Match, If-None-Match 等更多可供选择的缓存头来控制缓存策略。 - **带宽**:HTTP/1.0 中,存在一些浪费带宽的现象,例如客户端只是需要某个对象的一部分,而服务器却将整个对象送过来了,并且不支持断点续传功能,HTTP/1.1 则在请求头引入了 range 头域,它允许只请求资源的某个部分,即返回码是 206(Partial Content),这样就方便了开发者自由的选择以便于充分利用带宽和连接。 diff --git a/docs/database/mysql/mysql-index.md b/docs/database/mysql/mysql-index.md index bda25f86..9eb3c50a 100644 --- a/docs/database/mysql/mysql-index.md +++ b/docs/database/mysql/mysql-index.md @@ -23,7 +23,7 @@ tag: **优点**: -- 使用索引可以大大加快 数据的检索速度(大大减少检索的数据量), 这也是创建索引的最主要的原因。 +- 使用索引可以大大加快数据的检索速度(大大减少检索的数据量), 减少 IO 次数,这也是创建索引的最主要的原因。 - 通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。 **缺点**: diff --git a/docs/database/redis/redis-questions-01.md b/docs/database/redis/redis-questions-01.md index edcff8ca..5f04f205 100644 --- a/docs/database/redis/redis-questions-01.md +++ b/docs/database/redis/redis-questions-01.md @@ -84,24 +84,24 @@ Memcached 是分布式缓存最开始兴起的那会,比较常用的。后来 相信看了上面的对比之后,我们已经没有什么理由可以选择使用 Memcached 来作为自己项目的分布式缓存了。 -### 为什么要用 Redis/为什么要用缓存? +### 为什么要用 Redis? -下面我们主要从“高性能”和“高并发”这两点来回答这个问题。 +**1、访问速度更快** -**1、高性能** - -假如用户第一次访问数据库中的某些数据的话,这个过程是比较慢,毕竟是从硬盘中读取的。但是,如果说,用户访问的数据属于高频数据并且不会经常改变的话,那么我们就可以很放心地将该用户访问的数据存在缓存中。 - -**这样有什么好处呢?** 那就是保证用户下一次再访问这些数据的时候就可以直接从缓存中获取了。操作缓存就是直接操作内存,所以速度相当快。 +传统数据库数据保存在磁盘,而 Redis 基于内存,内存的访问速度比磁盘快很多。引入 Redis 之后,我们可以把一些高频访问的数据放到 Redis 中,这样下次就可以直接从内存中读取,速度可以提升几十倍甚至上百倍。 **2、高并发** -一般像 MySQL 这类的数据库的 QPS 大概都在 1w 左右(4 核 8g) ,但是使用 Redis 缓存之后很容易达到 10w+,甚至最高能达到 30w+(就单机 Redis 的情况,Redis 集群的话会更高)。 +一般像 MySQL 这类的数据库的 QPS 大概都在 4k 左右(4 核 8g) ,但是使用 Redis 缓存之后很容易达到 5w+,甚至能达到 10w+(就单机 Redis 的情况,Redis 集群的话会更高)。 > QPS(Query Per Second):服务器每秒可以执行的查询次数; 由此可见,直接操作缓存能够承受的数据库请求数量是远远大于直接访问数据库的,所以我们可以考虑把数据库中的部分数据转移到缓存中去,这样用户的一部分请求会直接到缓存这里而不用经过数据库。进而,我们也就提高了系统整体的并发。 +**3、功能全面** + +Redis 除了可以用作缓存之外,还可以用于分布式锁、限流、消息队列、延时队列等场景,功能强大! + ### 常见的缓存读写策略有哪些? 关于常见的缓存读写策略的详细介绍,可以看我写的这篇文章:[3 种常用的缓存读写策略详解](https://javaguide.cn/database/redis/3-commonly-used-cache-read-and-write-strategies.html) 。 diff --git a/docs/database/redis/redis-questions-02.md b/docs/database/redis/redis-questions-02.md index 058c4f37..a13bb8c0 100644 --- a/docs/database/redis/redis-questions-02.md +++ b/docs/database/redis/redis-questions-02.md @@ -732,12 +732,12 @@ Bloom Filter 会使用一个较大的 bit 数组来保存所有的数据,数 下面单独对 **Cache Aside Pattern(旁路缓存模式)** 来聊聊。 -Cache Aside Pattern 中遇到写请求是这样的:更新 DB,然后直接删除 cache 。 +Cache Aside Pattern 中遇到写请求是这样的:更新数据库,然后直接删除缓存 。 -如果更新数据库成功,而删除缓存这一步失败的情况的话,简单说两个解决方案: +如果更新数据库成功,而删除缓存这一步失败的情况的话,简单说有两个解决方案: 1. **缓存失效时间变短(不推荐,治标不治本)**:我们让缓存数据的过期时间变短,这样的话缓存就会从数据库中加载数据。另外,这种解决办法对于先操作缓存后操作数据库的场景不适用。 -2. **增加 cache 更新重试机制(常用)**:如果 cache 服务当前不可用导致缓存删除失败的话,我们就隔一段时间进行重试,重试次数可以自己定。如果多次重试还是失败的话,我们可以把当前更新失败的 key 存入队列中,等缓存服务可用之后,再将缓存中对应的 key 删除即可。 +2. **增加缓存更新重试机制(常用)**:如果缓存服务当前不可用导致缓存删除失败的话,我们就隔一段时间进行重试,重试次数可以自己定。不过,这里更适合引入消息队列实现异步重试,将删除缓存重试的消息投递到消息队列,然后由专门的消费者来重试,直到成功。虽然说多引入了一个消息队列,但其整体带来的收益还是要更高一些。 相关文章推荐:[缓存和数据库一致性问题,看这篇就够了 - 水滴与银弹](https://mp.weixin.qq.com/s?__biz=MzIyOTYxNDI5OA==&mid=2247487312&idx=1&sn=fa19566f5729d6598155b5c676eee62d&chksm=e8beb8e5dfc931f3e35655da9da0b61c79f2843101c130cf38996446975014f958a6481aacf1&scene=178&cur_album_id=1699766580538032128#rd)。 diff --git a/docs/high-performance/images/message-queue/spring-bean-lifestyle.png b/docs/high-performance/images/message-queue/spring-bean-lifestyle.png new file mode 100644 index 0000000000000000000000000000000000000000..ac87e052116c3ce3e9edce4f8234915d1ac3ff0a GIT binary patch literal 158530 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

Qcz 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

-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 z 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 { **方式二:通过 `Executor` 框架的工具类 `Executors` 来创建。** -我们可以创建多种类型的 `ThreadPoolExecutor`: +`Executors`工具类提供的创建线程池的方法如下图所示: -- **`FixedThreadPool`**:该方法返回一个固定线程数量的线程池。该线程池中的线程数量始终不变。当有一个新的任务提交时,线程池中若有空闲线程,则立即执行。若没有,则新的任务会被暂存在一个任务队列中,待有线程空闲时,便处理在任务队列中的任务。 -- **`SingleThreadExecutor`:** 该方法返回一个只有一个线程的线程池。若多余一个任务被提交到该线程池,任务会被保存在一个任务队列中,待线程空闲,按先入先出的顺序执行队列中的任务。 -- **`CachedThreadPool`:** 该方法返回一个可根据实际情况调整线程数量的线程池。初始大小为 0。当有新任务提交时,如果当前线程池中没有线程可用,它会创建一个新的线程来处理该任务。如果在一段时间内(默认为 60 秒)没有新任务提交,核心线程会超时并被销毁,从而缩小线程池的大小。 -- **`ScheduledThreadPool`**:该方法返回一个用来在给定的延迟后运行任务或者定期执行任务的线程池。 +![](https://oss.javaguide.cn/github/javaguide/java/concurrent/executors-new-thread-pool-methods.png) -对应 `Executors` 工具类中的方法如图所示: +可以看出,通过`Executors`工具类可以创建多种类型的线程池,包括: -![](https://oss.javaguide.cn/github/javaguide/java/concurrent/executors-inner-threadpool.png) +- `FixedThreadPool`:固定线程数量的线程池。该线程池中的线程数量始终不变。当有一个新的任务提交时,线程池中若有空闲线程,则立即执行。若没有,则新的任务会被暂存在一个任务队列中,待有线程空闲时,便处理在任务队列中的任务。 +- `SingleThreadExecutor`: 只有一个线程的线程池。若多余一个任务被提交到该线程池,任务会被保存在一个任务队列中,待线程空闲,按先入先出的顺序执行队列中的任务。 +- `CachedThreadPool`: 可根据实际情况调整线程数量的线程池。线程池的线程数量不确定,但若有空闲线程可以复用,则会优先使用可复用的线程。若所有线程均在工作,又有新的任务提交,则会创建新的线程处理任务。所有线程在当前任务执行完毕后,将返回线程池进行复用。 +- `ScheduledThreadPool`:给定的延迟后运行任务或者定期执行任务的线程池。 ### 为什么不推荐使用内置线程池? @@ -234,9 +234,9 @@ static class Entry extends WeakReference> { `Executors` 返回线程池对象的弊端如下: -- **`FixedThreadPool` 和 `SingleThreadExecutor`**:使用的是无界的 `LinkedBlockingQueue`,任务队列最大长度为 `Integer.MAX_VALUE`,可能堆积大量的请求,从而导致 OOM。 -- **`CachedThreadPool`**:使用的是同步队列 `SynchronousQueue`, 允许创建的线程数量为 `Integer.MAX_VALUE` ,如果任务数量过多且执行速度较慢,可能会创建大量的线程,从而导致 OOM。 -- **`ScheduledThreadPool` 和 `SingleThreadScheduledExecutor`**:使用的无界的延迟阻塞队列`DelayedWorkQueue`,任务队列最大长度为 `Integer.MAX_VALUE`,可能堆积大量的请求,从而导致 OOM。 +- `FixedThreadPool` 和 `SingleThreadExecutor`:使用的是无界的 `LinkedBlockingQueue`,任务队列最大长度为 `Integer.MAX_VALUE`,可能堆积大量的请求,从而导致 OOM。 +- `CachedThreadPool`:使用的是同步队列 `SynchronousQueue`, 允许创建的线程数量为 `Integer.MAX_VALUE` ,如果任务数量过多且执行速度较慢,可能会创建大量的线程,从而导致 OOM。 +- `ScheduledThreadPool` 和 `SingleThreadScheduledExecutor`:使用的无界的延迟阻塞队列`DelayedWorkQueue`,任务队列最大长度为 `Integer.MAX_VALUE`,可能堆积大量的请求,从而导致 OOM。 ```java // 无界队列 LinkedBlockingQueue @@ -300,31 +300,31 @@ public ScheduledThreadPoolExecutor(int corePoolSize) { } ``` -**`ThreadPoolExecutor` 3 个最重要的参数:** +`ThreadPoolExecutor` 3 个最重要的参数: -- **`corePoolSize` :** 任务队列未达到队列容量时,最大可以同时运行的线程数量。 -- **`maximumPoolSize` :** 任务队列中存放的任务达到队列容量的时候,当前可以同时运行的线程数量变为最大线程数。 -- **`workQueue`:** 新任务来的时候会先判断当前运行的线程数量是否达到核心线程数,如果达到的话,新任务就会被存放在队列中。 +- `corePoolSize` : 任务队列未达到队列容量时,最大可以同时运行的线程数量。 +- `maximumPoolSize` : 任务队列中存放的任务达到队列容量的时候,当前可以同时运行的线程数量变为最大线程数。 +- `workQueue`: 新任务来的时候会先判断当前运行的线程数量是否达到核心线程数,如果达到的话,新任务就会被存放在队列中。 `ThreadPoolExecutor`其他常见参数 : -- **`keepAliveTime`**:线程池中的线程数量大于 `corePoolSize` 的时候,如果这时没有新的任务提交,多余的空闲线程不会立即销毁,而是会等待,直到等待的时间超过了 `keepAliveTime`才会被回收销毁,线程池回收线程时,会对核心线程和非核心线程一视同仁,直到线程池中线程的数量等于 `corePoolSize` ,回收过程才会停止。 -- **`unit`** : `keepAliveTime` 参数的时间单位。 -- **`threadFactory`** :executor 创建新线程的时候会用到。 -- **`handler`** :饱和策略。关于饱和策略下面单独介绍一下。 +- `keepAliveTime`:线程池中的线程数量大于 `corePoolSize` 的时候,如果这时没有新的任务提交,核心线程外的线程不会立即销毁,而是会等待,直到等待的时间超过了 `keepAliveTime`才会被回收销毁。 +- `unit` : `keepAliveTime` 参数的时间单位。 +- `threadFactory` :executor 创建新线程的时候会用到。 +- `handler` :饱和策略(后面会单独详细介绍一下)。 下面这张图可以加深你对线程池中各个参数的相互关系的理解(图片来源:《Java 性能调优实战》): -![线程池各个参数的关系](./images/java-thread-pool-summary/线程池各个参数之间的关系.png) +![线程池各个参数的关系](https://oss.javaguide.cn/github/javaguide/java/concurrent/relationship-between-thread-pool-parameters.png) ### 线程池的饱和策略有哪些? 如果当前同时运行的线程数量达到最大线程数量并且队列也已经被放满了任务时,`ThreadPoolExecutor` 定义一些策略: -- **`ThreadPoolExecutor.AbortPolicy`:** 抛出 `RejectedExecutionException`来拒绝新任务的处理。 -- **`ThreadPoolExecutor.CallerRunsPolicy`:** 调用执行自己的线程运行任务,也就是直接在调用`execute`方法的线程中运行(`run`)被拒绝的任务,如果执行程序已关闭,则会丢弃该任务。因此这种策略会降低对于新任务提交速度,影响程序的整体性能。如果您的应用程序可以承受此延迟并且你要求任何一个任务请求都要被执行的话,你可以选择这个策略。 -- **`ThreadPoolExecutor.DiscardPolicy`:** 不处理新任务,直接丢弃掉。 -- **`ThreadPoolExecutor.DiscardOldestPolicy`:** 此策略将丢弃最早的未处理的任务请求。 +- `ThreadPoolExecutor.AbortPolicy`:抛出 `RejectedExecutionException`来拒绝新任务的处理。 +- `ThreadPoolExecutor.CallerRunsPolicy`:调用执行自己的线程运行任务,也就是直接在调用`execute`方法的线程中运行(`run`)被拒绝的任务,如果执行程序已关闭,则会丢弃该任务。因此这种策略会降低对于新任务提交速度,影响程序的整体性能。如果您的应用程序可以承受此延迟并且你要求任何一个任务请求都要被执行的话,你可以选择这个策略。 +- `ThreadPoolExecutor.DiscardPolicy`:不处理新任务,直接丢弃掉。 +- `ThreadPoolExecutor.DiscardOldestPolicy`:此策略将丢弃最早的未处理的任务请求。 举个例子:Spring 通过 `ThreadPoolTaskExecutor` 或者我们直接通过 `ThreadPoolExecutor` 的构造函数创建线程池的时候,当我们不指定 `RejectedExecutionHandler` 饱和策略来配置线程池的时候,默认使用的是 `AbortPolicy`。在这种饱和策略下,如果队列满了,`ThreadPoolExecutor` 将抛出 `RejectedExecutionException` 异常来拒绝新来的任务 ,这代表你将丢失对这个任务的处理。如果不想丢弃任务的话,可以使用`CallerRunsPolicy`。`CallerRunsPolicy` 和其他的几个策略不同,它既不会抛弃任务,也不会抛出异常,而是将任务回退给调用者,使用调用者的线程来执行任务 @@ -354,7 +354,7 @@ public static class CallerRunsPolicy implements RejectedExecutionHandler { ### 线程池处理任务的流程了解吗? -![图解线程池实现原理](https://oss.javaguide.cn/javaguide/%E5%9B%BE%E8%A7%A3%E7%BA%BF%E7%A8%8B%E6%B1%A0%E5%AE%9E%E7%8E%B0%E5%8E%9F%E7%90%86.png) +![图解线程池实现原理](https://oss.javaguide.cn/github/javaguide/java/concurrent/thread-pool-principle.png) 1. 如果当前运行的线程数小于核心线程数,那么就会新建一个线程来执行任务。 2. 如果当前运行的线程数等于或大于核心线程数,但是小于最大线程数,那么就把该任务放入到任务队列里等待执行。 diff --git a/docs/java/concurrent/java-thread-pool-summary.md b/docs/java/concurrent/java-thread-pool-summary.md index eb0a751b..9dff3a50 100644 --- a/docs/java/concurrent/java-thread-pool-summary.md +++ b/docs/java/concurrent/java-thread-pool-summary.md @@ -80,7 +80,7 @@ public class ScheduledThreadPoolExecutor 线程池实现类 `ThreadPoolExecutor` 是 `Executor` 框架最核心的类。 -### 构造方法介绍 +### 线程池参数分析 `ThreadPoolExecutor` 类中提供的四个构造方法。我们来看最长的那个,其余三个都是在这个构造方法的基础上产生(其他几个构造方法说白点都是给定某些默认参数的构造方法比如默认制定拒绝策略是什么)。 @@ -112,24 +112,24 @@ public class ScheduledThreadPoolExecutor } ``` -下面这些对创建非常重要,在后面使用线程池的过程中你一定会用到!所以,务必拿着小本本记清楚。 +下面这些参数非常重要,在后面使用线程池的过程中你一定会用到!所以,务必拿着小本本记清楚。 -**`ThreadPoolExecutor` 3 个最重要的参数:** +`ThreadPoolExecutor` 3 个最重要的参数: -- **`corePoolSize` :** 任务队列未达到队列容量时,最大可以同时运行的线程数量。 -- **`maximumPoolSize` :** 任务队列中存放的任务达到队列容量的时候,当前可以同时运行的线程数量变为最大线程数。 -- **`workQueue`:** 新任务来的时候会先判断当前运行的线程数量是否达到核心线程数,如果达到的话,新任务就会被存放在队列中。 +- `corePoolSize` : 任务队列未达到队列容量时,最大可以同时运行的线程数量。 +- `maximumPoolSize` : 任务队列中存放的任务达到队列容量的时候,当前可以同时运行的线程数量变为最大线程数。 +- `workQueue`: 新任务来的时候会先判断当前运行的线程数量是否达到核心线程数,如果达到的话,新任务就会被存放在队列中。 `ThreadPoolExecutor`其他常见参数 : -- **`keepAliveTime`**:线程池中的线程数量大于 `corePoolSize` 的时候,如果这时没有新的任务提交,核心线程外的线程不会立即销毁,而是会等待,直到等待的时间超过了 `keepAliveTime`才会被回收销毁。 -- **`unit`** : `keepAliveTime` 参数的时间单位。 -- **`threadFactory`** :executor 创建新线程的时候会用到。 -- **`handler`** :饱和策略。关于饱和策略下面单独介绍一下。 +- `keepAliveTime`:线程池中的线程数量大于 `corePoolSize` 的时候,如果这时没有新的任务提交,核心线程外的线程不会立即销毁,而是会等待,直到等待的时间超过了 `keepAliveTime`才会被回收销毁。 +- `unit` : `keepAliveTime` 参数的时间单位。 +- `threadFactory` :executor 创建新线程的时候会用到。 +- `handler` :饱和策略(后面会单独详细介绍一下)。 下面这张图可以加深你对线程池中各个参数的相互关系的理解(图片来源:《Java 性能调优实战》): -![线程池各个参数的关系](./images/java-thread-pool-summary/线程池各个参数之间的关系.png) +![线程池各个参数的关系](https://oss.javaguide.cn/github/javaguide/java/concurrent/relationship-between-thread-pool-parameters.png) **`ThreadPoolExecutor` 饱和策略定义:** @@ -142,9 +142,23 @@ public class ScheduledThreadPoolExecutor 举个例子: -Spring 通过 `ThreadPoolTaskExecutor` 或者我们直接通过 `ThreadPoolExecutor` 的构造函数创建线程池的时候,当我们不指定 `RejectedExecutionHandler` 饱和策略的话来配置线程池的时候默认使用的是 `ThreadPoolExecutor.AbortPolicy`。在默认情况下,`ThreadPoolExecutor` 将抛出 `RejectedExecutionException` 来拒绝新来的任务 ,这代表你将丢失对这个任务的处理。 对于可伸缩的应用程序,建议使用 `ThreadPoolExecutor.CallerRunsPolicy`。当最大池被填满时,此策略为我们提供可伸缩队列(这个直接查看 `ThreadPoolExecutor` 的构造函数源码就可以看出,比较简单的原因,这里就不贴代码了)。 +举个例子:Spring 通过 `ThreadPoolTaskExecutor` 或者我们直接通过 `ThreadPoolExecutor` 的构造函数创建线程池的时候,当我们不指定 `RejectedExecutionHandler` 饱和策略来配置线程池的时候,默认使用的是 `AbortPolicy`。在这种饱和策略下,如果队列满了,`ThreadPoolExecutor` 将抛出 `RejectedExecutionException` 异常来拒绝新来的任务 ,这代表你将丢失对这个任务的处理。如果不想丢弃任务的话,可以使用`CallerRunsPolicy`。`CallerRunsPolicy` 和其他的几个策略不同,它既不会抛弃任务,也不会抛出异常,而是将任务回退给调用者,使用调用者的线程来执行任务 -### 线程池创建两种方式 +```java +public static class CallerRunsPolicy implements RejectedExecutionHandler { + + public CallerRunsPolicy() { } + + public void rejectedExecution(Runnable r, ThreadPoolExecutor e) { + if (!e.isShutdown()) { + // 直接主线程执行,而不是线程池中的线程执行 + r.run(); + } + } + } +``` + +### 线程池创建的两种方式 **方式一:通过`ThreadPoolExecutor`构造函数来创建(推荐)。** @@ -152,24 +166,24 @@ Spring 通过 `ThreadPoolTaskExecutor` 或者我们直接通过 `ThreadPoolExecu **方式二:通过 `Executor` 框架的工具类 `Executors` 来创建。** -我们可以创建多种类型的 `ThreadPoolExecutor`: +`Executors`工具类提供的创建线程池的方法如下图所示: -- **`FixedThreadPool`**:该方法返回一个固定线程数量的线程池。该线程池中的线程数量始终不变。当有一个新的任务提交时,线程池中若有空闲线程,则立即执行。若没有,则新的任务会被暂存在一个任务队列中,待有线程空闲时,便处理在任务队列中的任务。 -- **`SingleThreadExecutor`:** 该方法返回一个只有一个线程的线程池。若多余一个任务被提交到该线程池,任务会被保存在一个任务队列中,待线程空闲,按先入先出的顺序执行队列中的任务。 -- **`CachedThreadPool`:** 该方法返回一个可根据实际情况调整线程数量的线程池。线程池的线程数量不确定,但若有空闲线程可以复用,则会优先使用可复用的线程。若所有线程均在工作,又有新的任务提交,则会创建新的线程处理任务。所有线程在当前任务执行完毕后,将返回线程池进行复用。 -- **`ScheduledThreadPool`**:该返回一个用来在给定的延迟后运行任务或者定期执行任务的线程池。 +![](https://oss.javaguide.cn/github/javaguide/java/concurrent/executors-new-thread-pool-methods.png) -对应 `Executors` 工具类中的方法如图所示: +可以看出,通过`Executors`工具类可以创建多种类型的线程池,包括: -![](https://oss.javaguide.cn/github/javaguide/java/concurrent/executors-inner-threadpool.png) +- `FixedThreadPool`:固定线程数量的线程池。该线程池中的线程数量始终不变。当有一个新的任务提交时,线程池中若有空闲线程,则立即执行。若没有,则新的任务会被暂存在一个任务队列中,待有线程空闲时,便处理在任务队列中的任务。 +- `SingleThreadExecutor`: 只有一个线程的线程池。若多余一个任务被提交到该线程池,任务会被保存在一个任务队列中,待线程空闲,按先入先出的顺序执行队列中的任务。 +- `CachedThreadPool`: 可根据实际情况调整线程数量的线程池。线程池的线程数量不确定,但若有空闲线程可以复用,则会优先使用可复用的线程。若所有线程均在工作,又有新的任务提交,则会创建新的线程处理任务。所有线程在当前任务执行完毕后,将返回线程池进行复用。 +- `ScheduledThreadPool`:给定的延迟后运行任务或者定期执行任务的线程池。 《阿里巴巴 Java 开发手册》强制线程池不允许使用 `Executors` 去创建,而是通过 `ThreadPoolExecutor` 构造函数的方式,这样的处理方式让写的同学更加明确线程池的运行规则,规避资源耗尽的风险 `Executors` 返回线程池对象的弊端如下(后文会详细介绍到): -- **`FixedThreadPool` 和 `SingleThreadExecutor`**:使用的是无界的 `LinkedBlockingQueue`,任务队列最大长度为 `Integer.MAX_VALUE`,可能堆积大量的请求,从而导致 OOM。 -- **`CachedThreadPool`**:使用的是同步队列 `SynchronousQueue`, 允许创建的线程数量为 `Integer.MAX_VALUE` ,如果任务数量过多且执行速度较慢,可能会创建大量的线程,从而导致 OOM。 -- **`ScheduledThreadPool` 和 `SingleThreadScheduledExecutor`**:使用的无界的延迟阻塞队列`DelayedWorkQueue`,任务队列最大长度为 `Integer.MAX_VALUE`,可能堆积大量的请求,从而导致 OOM。 +- `FixedThreadPool` 和 `SingleThreadExecutor`:使用的是无界的 `LinkedBlockingQueue`,任务队列最大长度为 `Integer.MAX_VALUE`,可能堆积大量的请求,从而导致 OOM。 +- `CachedThreadPool`:使用的是同步队列 `SynchronousQueue`, 允许创建的线程数量为 `Integer.MAX_VALUE` ,如果任务数量过多且执行速度较慢,可能会创建大量的线程,从而导致 OOM。 +- `ScheduledThreadPool` 和 `SingleThreadScheduledExecutor`:使用的无界的延迟阻塞队列`DelayedWorkQueue`,任务队列最大长度为 `Integer.MAX_VALUE`,可能堆积大量的请求,从而导致 OOM。 ```java // 无界队列 LinkedBlockingQueue @@ -217,7 +231,7 @@ public ScheduledThreadPoolExecutor(int corePoolSize) { 我们上面讲解了 `Executor`框架以及 `ThreadPoolExecutor` 类,下面让我们实战一下,来通过写一个 `ThreadPoolExecutor` 的小 Demo 来回顾上面的内容。 -### ThreadPoolExecutor 示例代码 +### 线程池示例代码 首先创建一个 `Runnable` 接口的实现类(当然也可以是 `Callable` 接口,我们后面会介绍两者的区别。)