Java同步引用

w.d*_*hue 0 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
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

在我同步的B类.这是在A的列表上,还是在B对A列表的引用上同步.我认为这是后者但可以使用一些帮助.

如果是这样,那么我该如何完成类似的实际工作呢?

谢谢!

Whi*_*g34 6

它在A的列表上同步.B对A列表的引用是什么意思?如果您使用A.getList()进入A使用列表或B,则它们都引用相同的对象.当您同步它时,您将阻止其他线程在同一对象上进行同步,无论它从哪里引用.