【发布时间】:2019-02-27 09:19:44
【问题描述】:
我找到了两种同步方法:
第一:
public static Integer number = 0;
public synchronized static void myMethod(){
number++;
number--;
}
第二个:
public static Integer number = 0;
private static final Object mySemaphoreLock = new Object();
public static void myMethod(){
synchronized (mySemaphoreLock){
number++;
number--;
}
}
这两种方法是一样的吗?它们有什么区别?
【问题讨论】:
-
方法远不止两种。这里的主要区别是锁对调用者(和其他所有人)可见的第一种方法,如果他们有权访问对象的引用,任何人都可以获取并持有该锁。
标签: java synchronized