class 中的多个同步静态方法
Multiple Synchronized Static Methods in a class
我在 class.
中有多个同步静态方法
public class DoSomething {
public static synchronized void fun1() {
/*do something time consuming*/
}
public static synchronized void fun2() {
/*do something time consuming*/
}
.
.
}
现在只允许一个线程执行class中的任何一个同步函数。这效率不高,因为功能彼此独立并且可以 运行 并行。
我怎样才能使它们彼此独立,但每个方法只允许一个线程,对 class.
的更改最少
使用单独的对象来锁定:
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*/
}
}
我在 class.
中有多个同步静态方法 public class DoSomething {
public static synchronized void fun1() {
/*do something time consuming*/
}
public static synchronized void fun2() {
/*do something time consuming*/
}
.
.
}
现在只允许一个线程执行class中的任何一个同步函数。这效率不高,因为功能彼此独立并且可以 运行 并行。 我怎样才能使它们彼此独立,但每个方法只允许一个线程,对 class.
的更改最少使用单独的对象来锁定:
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*/
}
}