Skip to content

Commit 5d5f8e3

Browse files
authored
[docs fix]错别字修改&优化表述
1 parent d38c074 commit 5d5f8e3

File tree

1 file changed

+3
-3
lines changed

1 file changed

+3
-3
lines changed

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -245,7 +245,7 @@ Java 内存模型抽象了线程和主内存之间的关系,就比如说线程
245245

246246
### 2.3. 并发编程的三个重要特性
247247

248-
1. **原子性** : 一个的操作或者多次操作,要么所有的操作全部都得到执行并且不会受到任何因素的干扰而中断,要么所有的操作都执行,要么都不执行。`synchronized` 可以保证代码片段的原子性。
248+
1. **原子性** : 一次操作或者多次操作,要么所有的操作全部都得到执行并且不会受到任何因素的干扰而中断,要么都不执行。`synchronized` 可以保证代码片段的原子性。
249249
2. **可见性** :当一个线程对共享变量进行了修改,那么另外的线程都是立即可以看到修改后的最新值。`volatile` 关键字可以保证共享变量的可见性。
250250
3. **有序性** :代码在执行的过程中的先后顺序,Java 在编译器以及运行期间的优化,代码的执行顺序未必就是编写代码时候的顺序。`volatile` 关键字可以禁止指令进行重排序优化。
251251

@@ -391,7 +391,7 @@ ThreadLocalMap(ThreadLocal<?> firstKey, Object firstValue) {
391391
}
392392
```
393393

394-
比如我们在同一个线程中声明了两个 `ThreadLocal` 对象的话,会使用 `Thread`内部都是使用仅有那个`ThreadLocalMap` 存放数据的,`ThreadLocalMap`的 key 就是 `ThreadLocal`对象,value 就是 `ThreadLocal` 对象调用`set`方法设置的值。
394+
比如我们在同一个线程中声明了两个 `ThreadLocal` 对象的话, `Thread`内部都是使用仅有的那个`ThreadLocalMap` 存放数据的,`ThreadLocalMap`的 key 就是 `ThreadLocal`对象,value 就是 `ThreadLocal` 对象调用`set`方法设置的值。
395395

396396
![ThreadLocal数据结构](images/threadlocal数据结构.png)
397397

@@ -950,7 +950,7 @@ protected final boolean compareAndSetState(int expect, int update) {
950950
```java
951951
protected boolean tryAcquire(int)//独占方式。尝试获取资源,成功则返回true,失败则返回false。
952952
protected boolean tryRelease(int)//独占方式。尝试释放资源,成功则返回true,失败则返回false。
953-
protected boolean tryAcquireShared(int)//共享方式。尝试获取资源。负数表示失败;0表示成功,但没有剩余可用资源;正数表示成功,且有剩余资源。
953+
protected int tryAcquireShared(int)//共享方式。尝试获取资源。负数表示失败;0表示成功,但没有剩余可用资源;正数表示成功,且有剩余资源。
954954
protected boolean tryReleaseShared(int)//共享方式。尝试释放资源,成功则返回true,失败则返回false。
955955
protected boolean isHeldExclusively()//该线程是否正在独占资源。只有用到condition才需要去实现它。
956956
```

0 commit comments

Comments
 (0)