threadlocal关键字
时间: 2023-11-23 14:55:46 浏览: 37
ThreadLocal是Java中的一个关键字,代表线程的本地变量。每个线程都有自己的ThreadLocal变量,线程可以独立地改变自己的变量,而不会影响其他线程的变量。ThreadLocal通常用于解决多线程并发访问时的数据安全问题,例如在Web应用程序中,每个请求都是由一个线程处理的,如果在处理请求时需要使用一些共享的数据,可以将这些数据存储在ThreadLocal中,这样每个线程都可以独立地访问自己的数据,而不会影响其他线程的数据。
以下是一个使用ThreadLocal的例子:
```java
public class MyThreadLocal {
private static final ThreadLocal<Integer> threadLocal = new ThreadLocal<Integer>() {
@Override
protected Integer initialValue() {
return 0;
}
};
public static void main(String[] args) {
for (int i = 0; i < 5; i++) {
new Thread(new Runnable() {
@Override
public void run() {
int num = threadLocal.get();
num += 5;
threadLocal.set(num);
System.out.println(Thread.currentThread().getName() + " : " + threadLocal.get());
}
}).start();
}
}
}
```
输出结果为:
```
Thread-0 : 5
Thread-1 : 5
Thread-2 : 5
Thread-3 : 5
Thread-4 : 5
```
以上代码创建了5个线程,每个线程都会将ThreadLocal中的值加5,并输出结果。由于每个线程都有自己的ThreadLocal变量,因此每个线程输出的结果都是独立的,不会相互影响。