我的代码生病了;看起来像一个相当简单的对象写入和读取操作,似乎从未解雇其次要操作。远程对等体上的内部类线程通过OOS发送ConcurrentHashMap
。线程objectoutputstream objectinputstream阻止不读取
当到达 - 它确实如此 - 接收代码继续,在一个布尔确定的循环中,监听OIS更新该CCHM。这些更新来自发送原始CCHM的兄弟姐妹(每个接收对端有一个服务兄弟)。这些兄弟姐妹使用的ObjectOutputStreams
取自兄弟姐妹的可见的HashMap
。兄弟姐妹不关心他们是否正在发送给该组的新成员,或者发送给现有成员。关于对等体是新的还是现有的区别仅在接收对等体侧知道,其中原始CCHM被接收和使用,然后代码继续等待相同OIS上的更新。新加入的对等点将其详细信息添加到远程的Hashtable
中,因此每次发送给所有对等点(新的加上现有的n个对等点)时,要发送的CCHM是一个更大的元素。
但是,现有的同伴没有收到更新的CCHM。而不是用我的代码填充System.out.println()
的电话或粗暴地停止它,我可能忽略了陷入这个混乱的陷阱?
你能给我一些代码吗? – DankMemes