Skip to content

Commit 61ab3dc

Browse files
authored
Merge pull request Snailclimb#2042 from paigeman/paigeman-patch-2
chore: fix typos
2 parents b142e7a + 545a516 commit 61ab3dc

File tree

6 files changed

+9
-9
lines changed

6 files changed

+9
-9
lines changed

docs/java/basis/spi.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -552,7 +552,7 @@ public class MyServiceLoader<S> {
552552

553553
其实不难发现,SPI 机制的具体实现本质上还是通过反射完成的。即:**我们按照规定将要暴露对外使用的具体实现类在 `META-INF/services/` 文件下声明。**
554554

555-
另外,SPI 机制在很多框架中都有应用:Spring 框架的基本原理也是类似的反射。还有 Dubbo 框架提供同样的 SPI 扩展机制,只不过 Dubbo 和 spring 框架中的 SPI 机制具体实现方式跟咱们今天学得这个有些细微的区别,不过整体的原理都是一致的,相信大家通过对 JDK 中 SPI 机制的学习,能够一通百通,加深对其他高深框的理解。
555+
另外,SPI 机制在很多框架中都有应用:Spring 框架的基本原理也是类似的方式。还有 Dubbo 框架提供同样的 SPI 扩展机制,只不过 Dubbo 和 spring 框架中的 SPI 机制具体实现方式跟咱们今天学得这个有些细微的区别,不过整体的原理都是一致的,相信大家通过对 JDK 中 SPI 机制的学习,能够一通百通,加深对其他高深框的理解。
556556

557557
通过 SPI 机制能够大大地提高接口设计的灵活性,但是 SPI 机制也存在一些缺点,比如:
558558

docs/java/collection/java-collection-questions-01.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -244,7 +244,7 @@ public interface RandomAccess {
244244
}
245245
```
246246

247-
`ArrayList` 实现了 `RandomAccess` 接口, 而 `LinkedList` 没有实现。为什么呢?我觉得还是和底层数据结构有关!`ArrayList` 底层是数组,而 `LinkedList` 底层是链表。数组天然支持随机访问,时间复杂度为 O(1),所以称为快速随机访问。链表需要遍历到特定位置才能访问特定位置的元素,时间复杂度为 O(n),所以不支持快速随机访问。`ArrayList` 实现了 `RandomAccess` 接口,就表明了他具有快速随机访问功能。 `RandomAccess` 接口只是标识,并不是说 `ArrayList` 实现 `RandomAccess` 接口才具有快速随机访问功能的!
247+
`ArrayList` 实现了 `RandomAccess` 接口, 而 `LinkedList` 没有实现。为什么呢?我觉得还是和底层数据结构有关!`ArrayList` 底层是数组,而 `LinkedList` 底层是链表。数组天然支持随机访问,时间复杂度为 O(1),所以称为快速随机访问。链表需要遍历到特定位置才能访问特定位置的元素,时间复杂度为 O(n),所以不支持快速随机访问。`ArrayList` 实现了 `RandomAccess` 接口,就表明了他具有快速随机访问功能。 `RandomAccess` 接口只是标识,并不是说 `ArrayList` 实现 `RandomAccess` 接口才具有快速随机访问功能的!
248248

249249
### 说一说 ArrayList 的扩容机制吧
250250

docs/java/concurrent/java-concurrent-questions-02.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -515,7 +515,7 @@ JDK 提供的所有现成的 `Lock` 实现类,包括 `synchronized` 关键字
515515
在下面的代码中,`method1()``method2()`都被 `synchronized` 关键字修饰,`method1()`调用了`method2()`
516516

517517
```java
518-
public class ReentrantLockDemo {
518+
public class SynchronizedDemo {
519519
public synchronized void method1() {
520520
System.out.println("方法1");
521521
method2();

docs/java/concurrent/java-concurrent-questions-03.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -214,7 +214,7 @@ static class Entry extends WeakReference<ThreadLocal<?>> {
214214
- **`FixedThreadPool`**:该方法返回一个固定线程数量的线程池。该线程池中的线程数量始终不变。当有一个新的任务提交时,线程池中若有空闲线程,则立即执行。若没有,则新的任务会被暂存在一个任务队列中,待有线程空闲时,便处理在任务队列中的任务。
215215
- **`SingleThreadExecutor`** 该方法返回一个只有一个线程的线程池。若多余一个任务被提交到该线程池,任务会被保存在一个任务队列中,待线程空闲,按先入先出的顺序执行队列中的任务。
216216
- **`CachedThreadPool`** 该方法返回一个可根据实际情况调整线程数量的线程池。线程池的线程数量不确定,但若有空闲线程可以复用,则会优先使用可复用的线程。若所有线程均在工作,又有新的任务提交,则会创建新的线程处理任务。所有线程在当前任务执行完毕后,将返回线程池进行复用。
217-
- **`ScheduledThreadPool`**该返回一个用来在给定的延迟后运行任务或者定期执行任务的线程池
217+
- **`ScheduledThreadPool`**该方法返回一个用来在给定的延迟后运行任务或者定期执行任务的线程池
218218

219219
对应 `Executors` 工具类中的方法如图所示:
220220

@@ -367,16 +367,16 @@ public static class CallerRunsPolicy implements RejectedExecutionHandler {
367367

368368
给线程池里的线程命名通常有下面两种方式:
369369

370-
**1、利用 guava 的 `ThreadFactoryBuilder` **
370+
**1、利用 guava 的 `ThreadFactoryBuilder`**
371371

372372
```java
373373
ThreadFactory threadFactory = new ThreadFactoryBuilder()
374374
.setNameFormat(threadNamePrefix + "-%d")
375375
.setDaemon(true).build();
376-
ExecutorService threadPool = new ThreadPoolExecutor(corePoolSize, maximumPoolSize, keepAliveTime, TimeUnit.MINUTES, workQueue, threadFactory)
376+
ExecutorService threadPool = new ThreadPoolExecutor(corePoolSize, maximumPoolSize, keepAliveTime, TimeUnit.MINUTES, workQueue, threadFactory);
377377
```
378378

379-
**2、自己实现 `ThreadFactor`**
379+
**2、自己实现 `ThreadFactory`**
380380

381381
```java
382382
import java.util.concurrent.Executors;

docs/java/concurrent/java-thread-pool-best-practices.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -205,7 +205,7 @@ CPU 密集型简单理解就是利用 CPU 计算能力的任务比如你在内
205205
线程池提供了两个关闭方法:
206206

207207
- **`shutdown()`** :关闭线程池,线程池的状态变为 `SHUTDOWN`。线程池不再接受新任务了,但是队列里的任务得执行完毕。
208-
- **`shutdownNow()`** :关闭线程池,线程的状态变为 `STOP`。线程池会终止当前正在运行的任务,并停止处理排队的任务并返回正在等待执行的 List。
208+
- **`shutdownNow()`** :关闭线程池,线程池的状态变为 `STOP`。线程池会终止当前正在运行的任务,停止处理排队的任务并返回正在等待执行的 List。
209209

210210
调用完 `shutdownNow``shuwdown` 方法后,并不代表线程池已经完成关闭操作,它只是异步的通知线程池进行关闭处理。如果要同步等待线程池彻底关闭后才继续往下执行,需要调用`awaitTermination`方法进行同步等待。
211211

docs/java/concurrent/java-thread-pool-summary.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -611,7 +611,7 @@ Exception in thread "main" java.util.concurrent.TimeoutException
611611
#### `shutdown()`VS`shutdownNow()`
612612

613613
- **`shutdown()`** :关闭线程池,线程池的状态变为 `SHUTDOWN`。线程池不再接受新任务了,但是队列里的任务得执行完毕。
614-
- **`shutdownNow()`** :关闭线程池,线程的状态变为 `STOP`。线程池会终止当前正在运行的任务,并停止处理排队的任务并返回正在等待执行的 List。
614+
- **`shutdownNow()`** :关闭线程池,线程池的状态变为 `STOP`。线程池会终止当前正在运行的任务,并停止处理排队的任务并返回正在等待执行的 List。
615615

616616
#### `isTerminated()` VS `isShutdown()`
617617

0 commit comments

Comments
 (0)