嗨,我有一个具有多种方法的类,其中我需要在所有方法中使用同步块,如下所示:
public class Test2 {
private Object mutex=new Object();
private OtherClass obj=new OtherClass();
public void method1(){
//do some stuff
synchronized (mutex) {
obj.//some method
//do some stuff
}
//do other stuff
}
public void method2(){
//do some stuff
synchronized (mutex) {
obj.//some method
//do some stuff
}
//do other stuff
}
public void method3(){
//do some stuff
synchronized (mutex) {
obj.//some method
//do some stuff
}
//do other stuff
}
public void method4(){
//do some stuff
synchronized (mutex) {
obj.//some method
//do some stuff
}
//do other stuff
}
}
我正在使用互斥锁来同步块,所以如果method1
正在使用会发生什么,另一个method2
同步块等待直到流从method1
.
我不希望这种情况发生,那我该怎么办?我知道因为我对所有方法都使用互斥锁,所以它会锁定method2
同步块。我想知道我应该怎么做才能删除它?我应该为每个要使用的方法创建成员变量,还是有另一种解决方法?
我希望另一个线程只有在调用相同的方法时才等待。就像两个线程类 mehod1 一样,所以第二个线程应该等待。但如果第二个线程调用 method2 它不应该等待。