适配wsl终端

This commit is contained in:
asahi
2023-12-23 14:44:52 +08:00
parent 47f5222bbf
commit 969fcc285b

View File

@@ -1,29 +1,29 @@
# juc # juc
## ThreadLocal ## ThreadLocal
通过ThreadLocal api可以存储对象并且存储的对象只有指定线程才能够访问。 通过ThreadLocal api可以存储对象并且存储的对象只有指定线程才能够访问。
### 示例 ### 示例
```java ```java
// 声明一个ThreadLocal对象其中存储的Integer值和特定线程绑定 // 声明一个ThreadLocal对象其中存储的Integer值和特定线程绑定
ThreadLocal<Integer> threadLocalVlaue = new ThreadLocal<>(); ThreadLocal<Integer> threadLocalVlaue = new ThreadLocal<>();
// 再特定线程中调用get/set方法可以对与该线程绑定 // 再特定线程中调用get/set方法可以对与该线程绑定
// 的integer值进行获取或设置 // 的integer值进行获取或设置
threadLocalValue.set(1); threadLocalValue.set(1);
Integer result = threadLocalValue.get(); Integer result = threadLocalValue.get();
``` ```
ThreadLocal类似于一个map其中key为线程value为与线程绑定的值再特定线程中调用 ThreadLocal类似于一个map其中key为线程value为与线程绑定的值再特定线程中调用
### api ### api
#### withInitial #### withInitial
可以通过`ThreadLocal.withInitial`方法来构造一个带初始值的threadLocal对象该静态方法接收一个supplier对象。 可以通过`ThreadLocal.withInitial`方法来构造一个带初始值的threadLocal对象该静态方法接收一个supplier对象。
```java ```java
ThreadLocal<Integer> threadLocal = ThreadLocal.withInitial(() -> 1); ThreadLocal<Integer> threadLocal = ThreadLocal.withInitial(() -> 1);
``` ```
如果一个ThreadLocal对象指定了withInitial方法那么当该ThreadLocal对象get为空时会调用withInitial并用该方法的返回值来初始化该threadLocal对象。 如果一个ThreadLocal对象指定了withInitial方法那么当该ThreadLocal对象get为空时会调用withInitial并用该方法的返回值来初始化该threadLocal对象。
#### remove #### remove
如果要移除ThreadLocal中的对象可以调用`remove`方法 如果要移除ThreadLocal中的对象可以调用`remove`方法
```java ```java
threadLocal.remove(); threadLocal.remove();
``` ```