我在一个类中有多个同步静态方法。
public class DoSomething {
public static synchronized void fun1() {
/*do something time consuming*/
}
public static synchronized void fun2() {
/*do something time consuming*/
}
.
.
}
现在只允许一个线程执行该类中的任何一个同步函数,这并不高效,因为这些函数是相互独立的,可以并行运行。这是不高效的,因为这些函数是相互独立的,并且可以并行运行。如何才能使它们相互独立,但每个方法只允许一个线程执行,并且对类的改动最小。
使用单独的对象来锁定。
private static final lock1=new Object();
private static final lock2=new Object();
public static void fun1() {
synchronized(lock1) {
/*do something time consuming*/
}
}
public static void fun2() {
synchronized(lock2) {
/*do something time consuming*/
}
}