我有 A 级和 B 级。
public class A() {
private static List<int> list = new ArrayList<int>();
public static List<int> getList() {
return list;
}
}
public class B() {
public void foo() {
synchronized(A.getList()) {
// DO Stuff
}
}
}
在我同步的 B 类中。这是在 A 的列表上同步,还是在 B 对 A 的列表的引用上同步。我认为是后者,但需要一些帮助。
如果是这样,那么我如何完成与此类似的实际可行的事情?
谢谢!
最佳答案
它在 A 的列表上同步。 B 引用 A 的列表是什么意思?无论您是在 A 中使用 list 还是在 B 中使用 A.getList(),它们都引用同一个对象。当您对其进行同步时,您将阻止其他线程在同一对象上同步,无论它是从何处引用的。
关于Java 同步引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5827679/