我的代码有问题;看起来相当简单的对象写入和读取操作,似乎永远不会触发它的辅助操作。远程对等点上的内部类线程ConcurrentHashMap
通过 OOS 发送一个。
当它到达时 - 它确实,好的 - 接收代码继续,在一个布尔确定的循环中,在 OIS 上侦听该 CCHM 的更新。这些更新来自发送原始 CCHM 的同级(每个接收对等方有一个服务同级)。这些ObjectOutputStreams
兄弟姐妹的使用取自兄弟姐妹的可见HashMap
。兄弟姐妹们并不关心他们是发送给该组的新成员,还是发送给现有成员。对等点是新的还是现有的差异仅在接收对等端知道,原始 CCHM 被接收和使用,然后代码继续等待同一 OIS 上的更新。加入的新对等点将其详细信息添加到远程Hashtable
,因此每次发送给所有对等点(新的,加上现有的 n 个),要发送的 CCHM 都会大一个元素。
但是现有的对等体没有收到更新的 CCHM。我没有用调用填充我的代码System.out.println()
或粗暴地停止它,而是我可能忽略了哪些陷阱来陷入这种混乱?