java - 在数组上同步。它是在所有元素上同步还是在数组对象上同步?

标签 java synchronization

如果我在数组上同步,这是否意味着我在同步其中的所有元素,或者我在同步数组对象?如果后者为真,那么我如何才能同时同步数组中的所有元素,以确保在执行某个 block 时不会访问 non?

例如 假设我们有一组银行账户,我们希望确保在执行特定代码块时没有线程可以访问任何账户。

最佳答案

它在监视器上同步阵列本身。

即使您可以对所有元素进行同步,也不能确保它们未被访问 - 因为同步只是建议性的。

这里的解决方案可能是封装:根本不允许其他代码看到数组本身。这样,您就可以通过自己的方法(例如 ArrayList)控制其他代码如何访问数组的成员。

请注意,即使您执行了所有这些操作,也不会阻止其他代码在您的独占代码开始运行之前获取数组元素,然后在您的独占代码运行时使用该引用(例如,改变它所指的对象)。您并没有真正向我们提供太多关于您正在尝试做什么的信息,但您可能需要采取不同的方法。

关于java - 在数组上同步。它是在所有元素上同步还是在数组对象上同步?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15860462/

相关文章:

java - 使用 Java API Elasticsearch 删除与查询相关的数据结果

java - 最终类中的静态函数是否隐式最终?

javascript - Node js FS accessSync设置全局变量路径失败

java - MongoDB Java 简单示例失败

java - 我可以在 setOnClickListener(new OnClick(){}); 处使用数组引用吗?

java - Apache POI 从 XWPFRun 获取换行符

java - 为什么不是所有线程同时启动?

c++ - Unix Domain Sockets, Udp Sockets Objective C 有什么用?

c++ - 共享内存 IPC 同步(无锁)

ios - 在 iOS 应用程序和 mac 之间同步信息的应用程序