java 中共有三种变量,分别是类变量,成员变量和局部变量。分别存放在 jvm 的方法区、堆内区、和栈内区中。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

public class Variables {

/**
* 类变量
*/
private static int a;

/**
* 成员变量
*/
private int b;

/**
* 局部变量
* @param c
*/
public void test(int c){
int d;
}
}

a 是类变量,b 是成员变量,而变量 c 和 d 是局部变量。

因为只有共享变量才会遇到并发问题,所以,变量 a 和 b 是共享变量,变量 c 和 d 是非共享变量。所以如果遇到多线程场景,对于变量 a 和 b 的操作是需要考虑线程安全的,而对于线程 c 和 d 的操作是不需要考虑线程安全的。