Java 同步引用

标签 java multithreading synchronized

我有 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/

相关文章:

java - Spring bean 实现两个接口(interface)

java - 哪个更适合异常处理?

python - 关闭一个窗口并在另一个窗口中继续执行?

c# - 同时运行 x 个 Web 请求

c++ - 使用 OpenMP 的并行 IplImage 转换

Java的synchronized方法并不是同步的

java - 避免多个对象事务死锁的最佳方法?

java - 如何将一个字符串分成 2-4 个长 block ?

java - 如何将主函数中的变量同步到新线程?

Java 输入为空显示警报