Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 9 additions & 9 deletions docs/java/multi-thread/万字详解ThreadLocal关键字.md
Original file line number Diff line number Diff line change
Expand Up @@ -186,7 +186,7 @@ public void set(T value) {
}

void createMap(Thread t, T firstValue) {
t.threadLocals = new `ThreadLocalMap`(this, firstValue);
t.threadLocals = new ThreadLocalMap(this, firstValue);
}
```

Expand Down Expand Up @@ -338,7 +338,7 @@ private void set(ThreadLocal<?> key, Object value) {
for (Entry e = tab[i];
e != null;
e = tab[i = nextIndex(i, len)]) {
`ThreadLocal`<?> k = e.get();
ThreadLocal<?> k = e.get();

if (k == key) {
e.value = value;
Expand Down Expand Up @@ -420,7 +420,7 @@ private void replaceStaleEntry(ThreadLocal<?> key, Object value,
(e = tab[i]) != null;
i = nextIndex(i, len)) {

`ThreadLocal`<?> k = e.get();
ThreadLocal<?> k = e.get();

if (k == key) {
e.value = value;
Expand Down Expand Up @@ -551,7 +551,7 @@ private int expungeStaleEntry(int staleSlot) {
for (i = nextIndex(staleSlot, len);
(e = tab[i]) != null;
i = nextIndex(i, len)) {
`ThreadLocal`<?> k = e.get();
ThreadLocal<?> k = e.get();
if (k == null) {
e.value = null;
tab[i] = null;
Expand Down Expand Up @@ -602,7 +602,7 @@ if (h != i) {

### `ThreadLocalMap`扩容机制

在``ThreadLocalMap.set()`方法的最后,如果执行完启发式清理工作后,未清理到任何数据,且当前散列数组中`Entry`的数量已经达到了列表的扩容阈值`(len*2/3)`,就开始执行`rehash()`逻辑:
在`ThreadLocalMap.set()`方法的最后,如果执行完启发式清理工作后,未清理到任何数据,且当前散列数组中`Entry`的数量已经达到了列表的扩容阈值`(len*2/3)`,就开始执行`rehash()`逻辑:

```java
if (!cleanSomeSlots(i, sz) && sz >= threshold)
Expand Down Expand Up @@ -653,7 +653,7 @@ private void resize() {
for (int j = 0; j < oldLen; ++j) {
Entry e = oldTab[j];
if (e != null) {
`ThreadLocal`<?> k = e.get();
ThreadLocal<?> k = e.get();
if (k == null) {
e.value = null;
} else {
Expand Down Expand Up @@ -711,7 +711,7 @@ private Entry getEntryAfterMiss(ThreadLocal<?> key, int i, Entry e) {
int len = tab.length;

while (e != null) {
`ThreadLocal`<?> k = e.get();
ThreadLocal<?> k = e.get();
if (k == key)
return e;
if (k == null)
Expand Down Expand Up @@ -773,7 +773,7 @@ public class InheritableThreadLocalDemo {
new Thread(new Runnable() {
@Override
public void run() {
System.out.println("子线程获取父类`ThreadLocal`数据:" + `ThreadLocal`.get());
System.out.println("子线程获取父类ThreadLocal数据:" + ThreadLocal.get());
System.out.println("子线程获取父类inheritableThreadLocal数据:" + inheritableThreadLocal.get());
}
}).start();
Expand All @@ -784,7 +784,7 @@ public class InheritableThreadLocalDemo {
打印结果:

```java
子线程获取父类`ThreadLocal`数据:null
子线程获取父类ThreadLocal数据:null
子线程获取父类inheritableThreadLocal数据:父类数据:inheritableThreadLocal
```

Expand Down