多线程访问一个类变量,每个线程类变量值不同
时间: 2023-08-04 15:14:24 浏览: 49
可以使用Java中的ThreadLocal类来实现多线程访问同一个类变量,但每个线程访问到的值不同。ThreadLocal类是Java中的一个线程局部变量,它提供了一种线程安全的方式来访问同一个类变量,但是每个线程看到的值是不同的。
下面是一个简单的示例代码,演示了如何使用ThreadLocal类来实现多线程访问同一个类变量,但每个线程看到的值不同:
```
public class MyClass {
private static final ThreadLocal<Integer> value = new ThreadLocal<Integer>() {
@Override protected Integer initialValue() {
return 0;
}
};
public static void increment() {
value.set(value.get() + 1);
}
public static int getValue() {
return value.get();
}
}
```
在这个示例中,MyClass类有一个私有的静态ThreadLocal变量value,它被初始化为0。increment()方法使用ThreadLocal的get()和set()方法来增加value的值。getValue()方法返回当前线程的value值。由于每个线程都有自己的ThreadLocal对象,并且每个ThreadLocal对象都有自己的value值,所以多个线程并发访问这个类变量时,每个线程看到的值是不同的。