java - 不同Jvm之间的同步

标签 java multithreading

我有一张如下所示的 map ...

键值 23 20 32 20 (20+20 =40 , min=23 max=32) 43 18 45 24 (24+18 =42 ,因为 42 >40 所以这里的最小值和最大值将相同,即 43 47 10
56 6 (24 +10 +6 =40) 所以这里最小值 = 45 最大值 = 56 49 2
47 12

所以如上所示,将有一个名为 split 的最终常量,其值为 40

最终 int SPLIT = 40;//这将是可配置的,因为它的值可以更改。

所以我必须实现逻辑,例如如果 map 的值达到 40 然后 map 的第一个键从计算开始的地方开始,他的键正好达到 40wilkl 被选择为最小值和最大值,上面也有解释

除此之外还需要注意,\at 如果总和超过 40,那么我们必须忽略它并将前一个值本身作为 min 和 max,在这种情况下 min 和 max 将相等。

请指教如何在 map 中通过java实现同样的

最佳答案

我会重新设计您的应用程序,使其不需要全局锁。实现您的系统,以便只有一个 JVM 需要锁,其他所有 JVM 都会与它对话以执行所需的操作。

有很多替代方案,使用 ServerSocket、文件锁、数据锁,但恕我直言,这些都很难正确或有效地实现。

关于java - 不同Jvm之间的同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12128181/

相关文章:

java - Java中的Redis锁键

Android 游戏循环中的 java.util.ConcurrentModificationException

java - 默认的 zookeeper watcher 是做什么的?

java - 这是实现并发的正确方法吗?

multithreading - glibc c11线程实现是pthread的包装器吗?

php - 在PHP中的另一个类中扩展一个类

java - 如何使用 java 邮件和 servlet 发送提醒?

java - 创建某种对象类型的 Mockito 数组

java - 在 DynamoDB 中删除属性

multithreading - Delphi7中不同线程分配和释放内存