只是想确定我理解锁定
public class MySync {
public static synchronized byte[] getRes(String str1, String str2) throws Exception {
...
return new byte[myLen];
}
//no other methods
}
public class MyClass extends MyClass2 {
public MyStuff getStuff (SomeObj obj) {
byte[] res = MySync.getRes(s1,s2);
...
}
...
}
线程 1 调用 MyClass
线程 2 调用 MyClass
线程 3 调用 MyClass
T1 调用 getres。
T2 等待 T1 完成对 MySync 类的锁定
T3 等待 T1 完成对 MySync 类的锁定
T1 完成
T3 调用 getres(即订单是否保留?)
T2 等待 T3 完成
T3 完成
T2 调用 getres
是的?
getRes 现在是“瓶颈”;线程需要在“队列”中等待?
请注意,我确实希望将其用于我的应用程序。每个操作只允许一个线程。
下面将完成与上面相同的操作,除了锁在 myLock 类上?
首选,为什么?
public class MySync {
private static final Object myLock = new Object();
public byte[] getRes(String str1, String str2) throws Exception {
synchronized (myLock) {
...
return new byte[myLen];
}
public class MyClass extends MyClass2 {
public MyStuff getStuff (SomeObj obj) {
byte[] res = new MySync().getRes(s1,s2);
...
}