Java 群集中的同步问题

Java 群集中的同步问题,java,synchronization,hazelcast,jgroups,distributed-objects,Java,Synchronization,Hazelcast,Jgroups,Distributed Objects,我有两个程序,它们都在集群上运行。我的问题是,当两个程序同时启动时,共享对象上的同步存在问题。如果我同时启动两个程序,它们几乎看不到其他人对该对象的操作 比如说, HazelcastInstance=Hazelcast.newHazelcastInstance(cfg); IMap lockMap=instance.getMap(“someMap”); //启动锁 lockMap.lock(“someLock”); System.out.println(“nodeId=“+nodeId+”“+S

我有两个程序,它们都在集群上运行。我的问题是,当两个程序同时启动时,共享对象上的同步存在问题。如果我同时启动两个程序,它们几乎看不到其他人对该对象的操作

比如说,

HazelcastInstance=Hazelcast.newHazelcastInstance(cfg);
IMap lockMap=instance.getMap(“someMap”);
//启动锁
lockMap.lock(“someLock”);
System.out.println(“nodeId=“+nodeId+”“+System.currentTimeMillis()+“lock”);
//把条目放到地图上
lockMap.put(nodeId,“value”);
//第1点
int size=lockMap.size();
System.out.println(“nodeId=“+nodeId+”size=“+size”);
//端锁
System.out.println(“nodeId=“+nodeId+”“+System.currentTimeMillis()+”解锁”);
解锁(“someLock”);
输出为:

7f653993-cd63-4246-946a-e7a141fa477e 1485417274993锁
7f653993-cd63-4246-946a-e7a141fa477e尺寸=1
7f653993-cd63-4246-946a-e7a141fa477e 1485417274994解锁

c11399ec-8242-4e80-b9e9-0F43A00590C 1485417348313锁
c11399ec-8242-4e80-b9e9-0F43A00590C尺寸=1
c11399ec-8242-4e80-b9e9-0F43A00590C 1485417348315解锁

每次调试时,我确信在开始锁和结束锁之间只有一个节点,并且在点1大小将被适当打印。但是,当我在点1同时运行两个节点时,每个节点都会打印“size=1”。第二个节点似乎不知道映射的最新状态

如何确保每个节点都能看到地图上的最新信息。我使用了jgroup,它也有类似的问题

任何帮助都将不胜感激


谢谢

每个线程中的
nodeId
值是多少?将打印更改为
System.out.println(“nodeId=“+nodeId+”size=“+size”)并显示输出。我已经添加了输出和时间。这两个程序都运行在同一台机器和两个不同的JVM上。可能问题是节点没有找到彼此,也没有形成集群。搜索此类消息的日志
Members[2]{Member[192.168.2.26]:5702-3919e352-0f16-4404-908d-cbdade6a297e此成员[192.168.2.26]:5701-9cdebcd7-9d92-4f42-8b0a-cca9facf9c71}
如果您看到上述消息,则意味着节点找到了彼此,并且可以看到共享映射的最新状态。