private static final ThreadLocal<CendThreadHolder> HOLDER = new ThreadLocal<>();是什么意思
时间: 2024-02-02 16:10:28 浏览: 97
ThreadLocal源码分析和使用
private static final ThreadLocal<CendThreadHolder> HOLDER = new ThreadLocal<>(); 这行代码定义了一个私有的静态常量ThreadLocal变量,类型为CendThreadHolder。ThreadLocal是Java中的一个线程本地变量,它可以为每个线程提供一个独立的变量副本,每个线程都可以独立地修改自己的副本,而不会影响其他线程的副本。在这个例子中,CendThreadHolder是一个自定义的类,表示线程的上下文信息。
这行代码的作用是为每个线程创建一个CendThreadHolder对象的副本,并将其存储在ThreadLocal变量HOLDER中。每个线程可以通过调用HOLDER.get()方法来获取自己的副本,通过调用HOLDER.set()方法来设置自己的副本,通过调用HOLDER.remove()方法来移除自己的副本。
这种方式可以方便地在多线程环境下共享数据,同时保证线程之间的数据隔离。每个线程都可以独立地操作自己的副本,而不会影响其他线程的副本。
示例代码如下:
```java
public class CendThreadHolder {
private String data;
public String getData() {
return data;
}
public void setData(String data) {
this.data = data;
}
}
public class ExampleThread extends Thread {
@Override
public void run() {
HOLDER.set(new CendThreadHolder());
HOLDER.get().setData("Hello, world!");
System.out.println(HOLDER.get().getData());
HOLDER.remove();
}
}
public class Main {
public static void main(String[] args) {
ExampleThread thread1 = new ExampleThread();
ExampleThread thread2 = new ExampleThread();
thread1.start();
thread2.start();
}
}
```
输出结果:
```
Hello, world!
Hello, world!
```
阅读全文