您好我有多种方法,我需要synchronized块在所有的方法是这样一类:同步块问题?
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,它不应该等待。
如果这不是你想要的行为,你想什么'method2'去做?跳过块?然后同步不是你正在寻找... – brimborium
我想其他线程只有等待,如果调用相同的方法..喜欢如果两个线程类mehod1所以第二个线程应该等待。但如果第二个线程调用method2,它不应该等待。 – Harinder
向下投票 - 非常本地化的问题,即使作者在问题中提出这个问题,答案也非常明显。 – Romain