我有一个执行3个线程的类,在我询问的每个线程上检查全局变量。我试图分别锁定每个变量,我不想每次更改一个变量时都阻塞整个类。我研究了一下,但仍然感到困惑。 在这种情况下,因为我必须从每个线程访问变量,所以必须使方法静态,所以我的问题是:每次调用getter和setter时,我是阻塞每个变量还是整个类?
public class MyClass {
private static boolean bool1= false;
private static boolean bool2= false;
public static void main(String[] args) {
//run Thread1
//run Thread2
//run thread3
}
private static Object lock1 = new Object();
private static Object lock2 = new Object();
public static boolean isBool1() {
synchronized(lock1) {
return bool1;
}
}
public static void setBool1(boolean bool) {
synchronized(lock1) {
MyClass.bool1= bool1;
}
}
public static boolean isBool2() {
synchronized(lock2) {
return bool2;
}
}
public static void setBool2(boolean bool2) {
synchronized(lock2) {
MyClass.bool2= bool2;
}
}
}